【问题标题】:PhpUnit test - Non-mocked method does not existPhpUnit 测试 - 非模拟方法不存在
【发布时间】:2014-05-04 23:57:10
【问题描述】:

我遇到了调用公共方法的问题。有一个简单的例子:

class Foo {
    public function bar()
    {
        return array();
    }
}

//test code
$test = $this->getMock('Foo', array('____'));
var_dump($test instanceof Foo);
var_dump(method_exists($test, 'bar'));
$result = $test->bar();

我得到以下结果:

bool(true)
bool(false)

Fatal error: Call to undefined method Mock_Foo_abdf1ea1::bar()

【问题讨论】:

  • array('____') - 添加以避免完全模拟。
  • 可能是设置模型的时候Foo类没有加载,所以创建了一个dummy类。
  • 问题是@gontrollez 提到的。如果我将类和测试一起创建一个文件,则没有问题。您在自动加载时遇到问题,并且该类不可用。所以 PHPUnit 不知道该类有方法bar
  • 是的,非常感谢!就是这么简单。)))

标签: php unit-testing phpunit


【解决方案1】:

上面提到的自动加载问题(我的 bootstrap.php 没有加载)。 所以类已经创建,但不是来自真实的类。 在线出错:

new Foo();

所以在这种情况下,我认为这是检查类加载的最佳方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2017-02-27
    • 2012-05-13
    • 2013-04-05
    • 2018-05-26
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多