【问题标题】:Phpunit, expect method(true) and method(false)Phpunit,期望方法(真)和方法(假)
【发布时间】:2014-11-18 19:12:07
【问题描述】:

我想测试一下:

$object->method(true);
$object->method(false);

我想这样测试它们:

$mock1 = $this->getMock ('ClassToBeTested', array('method'));
$mock1->expects ($this->at(1))->once()->method('method')->with($this->equalTo(false));
$mock1->expects ($this->at(2))->once()->method('method')->with($this->equalTo(true));

这当然行不通。我需要一种“多重”异常。

【问题讨论】:

  • 你不能在单独的测试中使用@expectedException吗?
  • ?我不等待“例外”。我等待方法()以“真”和“假”参数运行
  • at() 用于调用、对方法的第一次调用、第二次调用等......您仍然可以简单地使用模拟调用方法、使用 2 个测试和 setUp( )/tearDown() 方法来包装模拟创建,并简单地模拟调用。 $mock1->expects($this->method('method')->with($this0>equalTo(false/true));

标签: php phpunit


【解决方案1】:

我认为您可以使用withConsecutive 归档您需要的内容。

示例改编自 PHPUnit 文档:

    $mock = $this->getMock('ClassToBeTested', array('method'));
    $mock->expects($this->exactly(2))
         ->method('method')
         ->withConsecutive(
             array(true),
             array(false)
         );

    $mock->method(true);        
    $mock->method(false);

在此处查看withConsecutive 示例:

https://phpunit.de/manual/current/en/test-doubles.html

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2015-09-17
    • 1970-01-01
    • 2011-02-04
    • 2020-09-01
    相关资源
    最近更新 更多