0

当我运行特定的测试套件时,

phpunit --testsuite LibTests

我得到了预期的结果(通过了测试)。但是,当我运行“phpunit”时,我收到一个错误声明:

Fatal error: Call to a member function rss_feed_url() on a non-object in /Users/Shared/Jenkins/Home/jobs/Fanpilot_CT_3.0/workspace/tests/libs/VoltampMediaRSSFeedTest.php on line 20

其中 rss_feed_url() 是我在 setup() 中加载的类的方法。

这是我的 phpunit.xml 文件的片段

<testsuites>
    <testsuite name="LibTests">
      <directory suffix=".php">tests/libs</directory>
    </testsuite>
</testsuites>

提前致谢!

4

2 回答 2

1

问题是我没有将 $this->CI 重新初始化为正确的控制器。上次测试时它已经过时了。在每个 setUp()m 中,您需要确保初始化 $this-CI,如下所示:

$this->CI = set_controller();

就我而言,我有一个自定义的 MY_Controller (applications/core/My_Controller.php)。因此,如果我需要利用我的自定义控制器,我可以这样做。

$this->CI = set_controller('MY_Controller');

作为旁注,我最终通过在 CIU_Loader 方法 _ci_load_class 中转储 get_class 和 get_parent_class 来解决这个问题,我注意到这些值取决于我将其作为单个测试还是作为所有测试运行。

于 2013-04-23T07:25:27.077 回答
0

似乎在 phpunit 中,大多数类变量在测试方法之间都未设置。如果这是问题所在(听起来像,带有非对象错误)。我相信我通过将这些变量设为私有和/或静态来为自己解决了这个问题。

于 2013-04-19T16:35:31.463 回答