PHPUnit断言方法不等于

时间:2013-09-12 10:36:10

标签: php unit-testing testing mocking phpunit

我有一个使用ServiceB的ClassA。在某种情况下,ClassA应该最终不会调用ServiceB的任何方法,除了一个。我现在想测试一下并确认没有其他方法确实被调用。

这可以按如下方式完成:

$classA->expects( $this->once() )->method( 'first_method' );
$classA->expects( $this->never() )->method( 'second_method' );
$classA->expects( $this->never() )->method( 'third_method' );
...

有没有办法简单地声明“没有首先应该调用此对象的方法”,而不是必须为每个方法指定一个限制?

我目前有这种方法可行,但是我的测试用例依赖于PHPUnit的两个内部类,我宁愿避免。

$schema->expects( $this->never() )
            ->method( new PHPUnit_Framework_Constraint_Not( new PHPUnit_Framework_Constraint_IsEqual( 'addField' ) ) );

有没有办法使用流畅的界面做同样的事情?

1 个答案:

答案 0 :(得分:1)

是的,有:)试试这个:

$classA->expects($this->once())->method('first_method');
$classA->expects($this->never())
    ->method($this->logicalNot($this->equalTo('first_method')));