我正在为SOA系统编写功能测试,因此需要从前端测试后端子系统。

这是一个标准的CRUD系统。我有一个测试,测试可以创建一个对象,它会向我返回新对象的ID。在随后的测试中,我想编辑然后删除该对象,但是phpunit似乎每次都重新实例化测试类,因此我丢失了实例变量。

我怎样才能做到这一点?不能选择在体系结构中的每台服务器上运行功能测试。

最佳答案

在测试之间传递内容的一种方法是使用 @depends 批注

public function testCreate() {
    //...
    return $id;
}

/**
 * @depends testCreate
 */
public function testDelete($id) {
    // use $id
}

如果您这样做的话,如果创建无效,那么将跳过“删除”测试。

因此,如果服务根本无法正常工作,而不是许多失败的测试,您只会得到一个错误。

如果您不想这样做,或者由于某种原因而与您的情况不匹配,那么静态类变量也可以作为一种选择,但是您应该确保自己确定自己绝对需要它们:)

关于php - 有什么方法可以在phpunit测试之间保留实例变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6735783/

10-14 15:06
查看更多