如何检查不仅使用特定参数调用模拟对象的方法?

k0pernikus

我有PHPUnit_Framework_MockObject_MockObject一个Logger

在单元测试中,我不希望warn通过特定的string参数调用该方法doNotCallMeWithThisString

我走了这么远:

public function testThis()
{
    ...

    $logger = $this->getMockLogger();
    $logger->expects($this->exactly(0))->method('warn')->with(
        $this->equalTo('doNotCallMeWithThisString')
    );
    ...
}

但这失败了,因为即使字符串参数是,也exactly(0)将对该warn方法的任何调用标记为错误somethingEntirelyUnrelated

我如何才能告诉模拟对象任何调用warn都可以,除非使用该特定字符串调用它?

exactly()方法用于声明模拟方法将被调用多少次。除非您$this->at()用于模拟行为,否则您不会为特定的调用指定参数。exactly(0)表示通话次数应为0。

将您的模拟更改为此:

 $logger->expects($this->any()) //Or however many times it should be called
        ->method('warn')
        ->with(
              $this->callback(function($argument) {
                  return $argument !== 'doNotCallMeWithThisString';
              })
         )
 );

这使用回调检查传递给模拟方法的参数,并验证该参数是否等于您的字符串。

PHPUnit文档具有约束类型,您可以使用约束类型来验证模拟的参数。目前,它没有不等于类型的字符串。但是,使用回调,您可以创建自己的回调。您的回调仅需要检查使用的参数,然后返回true确定的参数,否则返回false

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何模拟模拟对象的方法调用?

来自分类Dev

如何使用大于X的整数参数模拟方法调用

来自分类Dev

Python模拟-检查是否在模拟对象中调用了方法

来自分类Dev

使用Mockito进行方法调用时如何检查方法参数?

来自分类Dev

如何检查 NSubstitute 模拟中使用的参数

来自分类Dev

检查使用运行时对象创建调用的模拟

来自分类Dev

检查使用运行时对象创建调用的模拟

来自分类Dev

如何模拟对接收可变对象作为参数的函数的调用?

来自分类Dev

如何从调用期望中调用比模拟方法更多参数的函数

来自分类Dev

如何验证带有特定字段值的参数调用的模拟?

来自分类Dev

如何使用Mockito验证未使用任何参数组合调用的模拟方法

来自分类Dev

如何使用两个不同的参数值两次调用我的模拟方法

来自分类Dev

如何在传递给模拟方法的对象上调用方法

来自分类Dev

如何模拟使用外部方法调用在构造函数中初始化的对象?

来自分类Dev

如何模拟采用回调对象和调用者的方法,使用回调来委托结果

来自分类Dev

如何使用未作为参数传递给方法的OCMock模拟对象?

来自分类Dev

如何模拟使用CppUTest返回对象的方法

来自分类Dev

谷歌模拟 - 如何期望不使用参数集调用函数

来自分类Dev

如何测试非模拟对象未调用的方法?

来自分类Dev

调用模拟对象的方法时如何验证返回值

来自分类Dev

如何检查使用JMockit传递的特定模拟实例?

来自分类Dev

Mockito如何捕获传递给注入的模拟对象的方法的参数?

来自分类Dev

如何使用函数参数:调用特定的getter

来自分类Dev

如何验证使用特定参数一次调用方法,而忽略其他争论的调用?

来自分类Dev

使用Mockito模拟具有对象参数的方法

来自分类Dev

检查两个不同的方法在模拟对象上调用相同的方法

来自分类Dev

使用Autofac.Moq检查其他方法时,如何正确模拟方法以返回特定数据?

来自分类Dev

如何在编译时检查是否存在可以使用一组特定参数调用的函数?

来自分类Dev

如何使用反射调用带有.class(非对象)参数的java中的方法

Related 相关文章

  1. 1

    如何模拟模拟对象的方法调用?

  2. 2

    如何使用大于X的整数参数模拟方法调用

  3. 3

    Python模拟-检查是否在模拟对象中调用了方法

  4. 4

    使用Mockito进行方法调用时如何检查方法参数?

  5. 5

    如何检查 NSubstitute 模拟中使用的参数

  6. 6

    检查使用运行时对象创建调用的模拟

  7. 7

    检查使用运行时对象创建调用的模拟

  8. 8

    如何模拟对接收可变对象作为参数的函数的调用?

  9. 9

    如何从调用期望中调用比模拟方法更多参数的函数

  10. 10

    如何验证带有特定字段值的参数调用的模拟?

  11. 11

    如何使用Mockito验证未使用任何参数组合调用的模拟方法

  12. 12

    如何使用两个不同的参数值两次调用我的模拟方法

  13. 13

    如何在传递给模拟方法的对象上调用方法

  14. 14

    如何模拟使用外部方法调用在构造函数中初始化的对象?

  15. 15

    如何模拟采用回调对象和调用者的方法,使用回调来委托结果

  16. 16

    如何使用未作为参数传递给方法的OCMock模拟对象?

  17. 17

    如何模拟使用CppUTest返回对象的方法

  18. 18

    谷歌模拟 - 如何期望不使用参数集调用函数

  19. 19

    如何测试非模拟对象未调用的方法?

  20. 20

    调用模拟对象的方法时如何验证返回值

  21. 21

    如何检查使用JMockit传递的特定模拟实例?

  22. 22

    Mockito如何捕获传递给注入的模拟对象的方法的参数?

  23. 23

    如何使用函数参数:调用特定的getter

  24. 24

    如何验证使用特定参数一次调用方法,而忽略其他争论的调用?

  25. 25

    使用Mockito模拟具有对象参数的方法

  26. 26

    检查两个不同的方法在模拟对象上调用相同的方法

  27. 27

    使用Autofac.Moq检查其他方法时,如何正确模拟方法以返回特定数据?

  28. 28

    如何在编译时检查是否存在可以使用一组特定参数调用的函数?

  29. 29

    如何使用反射调用带有.class(非对象)参数的java中的方法

热门标签

归档