我想了解phpunit是如何工作的,以及如何将phpunit应用到我的wordpress项目。
我能够运行wordpress的官方wp-测试套件,我也用我的wordpress插件代码做了一些简单的测试。
现在我被困在尝试使用所谓的"存根"。用(可选的)返回配置返回值的test double替换对象的做法被称为存根。
我只是做了一个类似于phpunit手册的例子,但一旦我调用getMock()方法,我总是有一个致命的错误
致命错误:调用未定义方法SampleMockTest::generate()
我正在做
- windows 7 XAMPP 1.7.7 with PHP: 5.3.8
- PHPUNIT) 3.7.5
- phpstorm作为IDE
some-class.php文件代码
<?php
class SomeClass {
public function doSomething() {
return true;
}
public function doSomethingElse() {
return true;
}
}
?>
samplemock.php文件代码
<?php
require_once 'C:'xampp'htdocs'wp-plugin-dev'wordpress'wp-content'plugins'secure-attachments'lib'some-class.php';
class SampleMockTest extends PHPUnit_Framework_TestCase
{
public function test_sample_mock()
{
$stub = $this->getMock('SomeClass');
$stub->expects($this->any())
->method('doSomething')
->will($this->returnValue('foo'));
$this->assertEquals('foo', $stub->doSomething());
}
}
?>
我读了大量的博客和问题,但我无法理解问题在哪里,至少如何调查它。我花了一天的时间在这个问题上,没有结果。
一旦我开始测试,我就会在 下面看到错误致命错误:在C:'xampp'htdocs'wp-plugin-dev'vendor'phpunit'phpunit-mock-objects'src'Framework'MockObject'Generator.php中调用未定义方法SampleMockTest::generate()
任何想法?
只需更新phpunit版本即可解决此问题。现在我安装了最新版本的3.7。*(3.7.37)和上面的代码像魅力一样工作。
我没有安装最新版本的PHPUnit(4.*),因为它有一些问题与phpstorm IDE工作,这可能可以以某种方式解决,但现在我专注于PHPUnit:)
所以诀窍就是PHPUNIT版本。我看到mock功能是在3.7之前引入的,所以我认为3.7.5不是问题,但是我错了!PHPUnit 3.7.37使用上面的代码