【问题标题】:PHPUnit: Writing tests for custom assertionsPHPUnit:为自定义断言编写测试
【发布时间】:2012-09-13 18:33:36
【问题描述】:

对于我们的 PHPUnit 测试,我们有时会编写自定义断言。今天我发现了一个自定义断言,它并没有断言它应该是什么。如果我为断言本身编写了一个单元测试,似乎可以避免这个问题。

我看到的唯一问题是,我不太确定如何为应该失败的断言编写测试,而不会导致测试本身失败。换句话说,对于一个需要字符串 'foo' 的测试,我想做这样的事情:

public function testAssertFoo()
{
   $var = 'bar';
   $callable = array( $this, "assertFoo" );
   $this->assertTestFails( $callable, $var );
}

当然,没有 assertTestFails 断言。但是有没有一种干净的方法来做这样的事情?

【问题讨论】:

    标签: php unit-testing phpunit


    【解决方案1】:

    假设assertFoo 使用PHPUnit 的内置断言,例如assertEquals,您可以简单地捕捉断言失败时抛出的PHPUnit_Framework_ExpectationFailedException。

    function testAssertFoo() {
        try {
            $this->assertFoo('bar');
            self::fail("assertFoo should fail for 'bar'");
        }
        catch (PHPUnit_Framework_ExpectationFailedException $e) { /* test passed */ }
    }
    
    function assertFoo($value) {
        self::assertEquals('foo', $value);
    }
    

    【讨论】:

    • 谢谢,我不知道 PHPUnit_Framework_ExpectationFailedException。应该这样做!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2012-02-16
    • 2013-02-02
    • 2020-05-28
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多