PHPUnit - 在外部对象

时间:2015-12-08 09:52:24

标签: php phpunit

我正在开发一个导出测试的工具,如PHP / PHPUnit,我正面临一个小问题。简要说明一下,测试脚本只包含对actionwords对象的调用,该对象包含测试的所有逻辑(以便考虑来自不同测试场景的各种步骤)。 一个例子可能更清楚:

require_once('Actionwords.php');

class CoffeeMachineHiptestPublisherSampleTest extends PHPUnit_Framework_TestCase {
  public $actionwords = new Actionwords();


  public function simpleUse() {
    $this->actionwords->iStartTheCoffeeMachine();
    $this->actionwords->iTakeACoffee();
    $this->actionwords->coffeeShouldBeServed();
  }
}

coffeeShouldBeServed方法中,我需要运行一个断言,但这是不可能的,因为Actionwords类不会扩展PHPUnit_Framework_TestCase(我不确定它应该是,它不是一个测试案例,只是一组帮手。)

目前我找到的解决方案是将测试对象传递给动作词,并使用断言的引用,类似于此。

class CoffeeMachineHiptestPublisherSampleTest extends PHPUnit_Framework_TestCase {
  public $actionwords;

  public function setUp() {
    $this->actionwords = new Actionwords($this);
  }
}

class Actionwords {
  var $tests;

  function __construct($tests) {
    $this->tests = $tests;
  }

  public function coffeeShouldBeServed() {
    $this->tests->assertTrue($this->sut->coffeeServed);
  }
}

它工作正常,但我发现它并不优雅。我不是PHP开发人员,因此可能会有一些更好的解决方案,感觉更“php-ish”。

提前致谢, 文森特

1 个答案:

答案 0 :(得分:2)

断言方法是静态的,因此您可以使用PHPUnit_Framework_Assert::assertEquals(),例如。