【问题标题】:(PHPUnit) How do i check multiple chained method calls with different arguments?(PHPUnit) 如何检查具有不同参数的多个链式方法调用?
【发布时间】:2021-11-01 20:39:41
【问题描述】:

执行测试后我收到以下消息:

Expectation failed for method name is "register" when invoked 4 time(s).
Method was expected to be called 4 times, actually called 1 times.

如何确保使用参数 D、E、F、G 调用寄存器 4 次? 不改变注册方法?

代码:

class A
{
    public function register(InterfaceABC $bar): self
    {
        //doSomething
        return $this;
    }
}
class Example {

    private A $a;

    public function __construct(A $a){
        $this->$a = $a;
    }

    public function fooBar() {
        $this->a->register(new D())
            ->register(new E())
            ->register(new F())
            ->register(new G());
    }


}
class ExampleTest extends TestCase
{

    public function testFooBar()
    {
        $mock = $this->createMock(A:class);
        $mock->expects(self::exactly(4))
            ->method("register")
            ->withConsecutive(
                [self::isInstanceOf(D:class)],
                [self::isInstanceOf(E:class)],
                [self::isInstanceOf(F:class)],
                [self::isInstanceOf(G:class)]
        );

       (new Example($mock))->foobar();
    }
}

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

    好的,我会回答自己的。

    刚刚添加 ->willReturnSelf() 和绿色繁荣。

            $mock->expects(self::exactly(4))
                ->method("register")
                ->withConsecutive(
                    [self::isInstanceOf(D:class)],
                    [self::isInstanceOf(E:class)],
                    [self::isInstanceOf(F:class)],
                    [self::isInstanceOf(G:class)]
            )->willReturnSelf();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 2017-09-06
      • 2017-03-01
      • 2011-07-25
      • 2011-10-14
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多