【问题标题】:stubbing a method call in phpunit in a wordpress project在 wordpress 项目中存根 phpunit 中的方法调用
【发布时间】:2014-09-09 00:36:29
【问题描述】:

我正在尝试了解 phpunit 的工作原理以及如何将 phpunit 应用到我的 wordpress 项目中。

我能够运行 wordpress 的官方 wp-tests 套件,并且我用我的 wordpress 插件代码做了一些简单的测试。

现在我坚持尝试使用所谓的“存根”。 php 手册说:用测试替身替换对象的做法,测试替身(可选)返回配置的返回值 被称为存根

我刚刚制作了一个类似于 phpunit 手册中的示例,但是一旦我调用 getMock() 方法,我总是会遇到致命错误

致命错误:调用未定义的方法 SampleMockTest::generate()

我正在努力

  • Windows 7
  • XAMPP 1.7.7 与 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 中调用未定义的方法 SampleMockTest::generate() .php 在第 224 行

有什么想法吗?

【问题讨论】:

    标签: php wordpress unit-testing phpunit


    【解决方案1】:

    只需更新 phpunit 版本即可解决问题。现在我安装了 fo 3.7.* (3.7.37) 的最新版本,上面的代码运行良好。

    我没有安装最新版本的 PHPUnit (4.*),因为它在使用 phpstorm IDE 时存在一些问题,这可能可以通过某种方式解决,但现在我专注于 phpunit :)

    所以诀窍就是 PHPUNIT 版本。我看到模拟功能是在 3.7 之前引入的,所以我认为 3.7.5 不是问题,但我错了! PHPUnit 3.7.37 可以正常使用上面的代码

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 2011-03-06
      • 1970-01-01
      相关资源
      最近更新 更多