在wordpress项目中存根phpunit中的方法调用


stubbing a method call in phpunit in a wordpress project

我想了解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使用上面的代码

可以正常工作