PHPUnit"链接"功能

时间:2015-10-30 17:45:52

标签: php phpunit

我正在为我正在进行的项目编写单元测试,并且我试图弄清楚如何有效地编写测试来测试它。

我目前有以下方法:

  • 对象:: createNew()
  • 对象 - >删除()

我担心的是我如何编写单元测试来有效地测试它,因为我很难想到如何" tie"这些功能在一起。例如,

<?php

public function testObjectCreation() {
    $object = Object::createNew("my parameters");

    // ... asserts

    // I don't want to keep the object so I delete it
    // but I don't want test that deleting works here too, I want to separate it
    $object->delete();
}

// Where would I get an object to test that deleting works?
public function testObjectDeletion() {
    // ...stuff
    $object->delete();
}

public function testUnrelatedObjectFunctions () {}

所以我的问题是,如何将一个对象提供给另一个函数。我是否必须将testObjectCreation()设为静态,然后将testObjectDeletion()@dataProvider一起提供给$('body').height() - jQuery('#footer').offset().top - jQuery('#footer').height(); ,否则我必须将$ object存储在仅在这两个中使用的私有/受保护变量中功能?如果我将其设为静态,我是否会失去对PHPUnit提供的断言函数的访问权限?

1 个答案:

答案 0 :(得分:1)

这似乎是@depends注释的一个好例子。这允许您在一个测试中返回一些内容并将其用作另一个测试中的参数。

以下是phpunit docs的一个例子:

public function testEmpty()
{
    $stack = array();
    $this->assertEmpty($stack);

    return $stack;
}

/**
 * @depends testEmpty
 */
public function testPush(array $stack)
{
    array_push($stack, 'foo');
    $this->assertEquals('foo', $stack[count($stack)-1]);
    $this->assertNotEmpty($stack);

    return $stack;
}