【问题标题】:PHPunit tests fail when running as a group作为一个组运行时 PHPunit 测试失败
【发布时间】:2014-04-24 13:51:38
【问题描述】:

在我的 phpunit.xml 中定义的 PHPUnit 中运行完整的测试套件时,我的所有单元测试都会运行并通过。

如果我随后运行一组特定的测试,我会收到一个致命错误,因为找不到我试图模拟的类。

我有一个 Bootstrap.php 文件,它设置了一个自动加载器,据我所知,这两种情况都使用了 Bootstrap。

有没有人遇到过这种情况,或者有什么建议?

【问题讨论】:

  • 也许显示您的测试失败、bootstrap.php 和您正在使用的命令行?

标签: php phpunit


【解决方案1】:

我偶尔会发生这种错误。在不了解您的自动加载器或设置的更多信息的情况下,您可以通过在类上使用 disableAutoload 来解决模拟问题。

使用 MockBuilder 界面:

$mock = $this->getMockBuilder('SomeClass')->disableAutoload()->getMock();

或者

$mock = $this->getMock('SomeClass', array(), null, null, true, true, true)
                                                disables Autoload ----^

http://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs.examples.StubTest.php

  • 默认情况下,给定类的所有方法都替换为测试 除非配置了返回值,否则只返回 NULL 例如,使用 will($this->returnValue())。

  • 当提供第二个(可选)参数时,只有方法 数组中的名称被替换为可配置的测试 双倍的。其他方法的行为没有改变。提供 NULL 作为参数表示不会替换任何方法。

  • 第三个(可选)参数可能包含一个参数数组,即 传递给原始类的构造函数(不替换为 默认情况下是一个虚拟实现)。

  • 第四个(可选)参数可用于指定类名 对于生成的测试双类。

  • 第五个(可选)参数可用于禁用对 原始类的构造函数。

  • 第六个(可选)参数可用于禁用对 原类的克隆构造函数。

  • 第七个(可选)参数可用于禁用__autoload() 在测试双类的生成过程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2017-10-19
    • 2013-07-28
    • 2012-12-07
    • 2015-02-19
    • 1970-01-01
    相关资源
    最近更新 更多