PHPUnit如何获取类属性?

PHPUnit如何获取类属性?,phpunit,Phpunit,为了测试API调用,我想测试实体生命周期 无内容获取 发布内容,返回ID 修补内容 知足 删除内容 我将使用post方法中返回的ID。我尝试在测试类中使用私有属性,但在每个方法测试中,该属性都会重置。如何在测试类中使用动态变量进行测试 我的代码和PHPUnit的响应示例: class CommentControllerTest extends PHPUnit_Framework_TestCase { private $commentId; public function s

为了测试API调用,我想测试实体生命周期

  • 无内容获取
  • 发布内容,返回ID
  • 修补内容
  • 知足
  • 删除内容
我将使用post方法中返回的ID。我尝试在测试类中使用私有属性,但在每个方法测试中,该属性都会重置。如何在测试类中使用动态变量进行测试

我的代码和PHPUnit的响应示例:

class CommentControllerTest extends PHPUnit_Framework_TestCase
{
    private $commentId;

    public function setUp()
    {
    }

    public function testPostValidComment()
    {
        $this->commentId = 42;
    }

    public function testUpdateComment()
    {
        var_dump($this->commentId); // NULL
    }

    public function testDeleteComment()
    {
        var_dump($this->commentId); // NULL
    }
}

为什么我的
var\u转储($this->commentId)返回
NULL

使用@depends注释建立执行顺序并将值从一个测试传递到下一个测试:

class CommentControllerTest extends PHPUnit_Framework_TestCase
{  
    public function testPostValidComment()
    {
        $commentId = 42;
        return $commentId;
    }

    /**
     * @depends testPostValidComment
     */
    public function testUpdateComment($commentId)
    {
        return $commentId;
    }

    /**
     * @depends testUpdateComment
     */
    public function testDeleteComment($commentId)
    {

    }
}
注意:

如果一个测试失败,依赖它的其他测试将不会运行。因此,对于示例设置:

测试发布->测试更新->测试删除

如果更新失败,您将不知道删除是否有效

要解决此问题,可以将依赖链更改为如下所示:

测试后->测试更新 测试发布->测试删除

因此,如果更新失败,将测试删除。在这种情况下,将执行两次后测试,一次用于更新,另一次用于删除


.

很遗憾,我无法在属性定义或设置方法中设置值。因为该值是在post方法期间生成的(42不是静态的,它可能是76或89879…)。我会用它来更新和删除发布的内容。