我正在尝试使用PHPUnit在类的方法Mail上编写测试。我正在测试的方法是saveMessage($ arguments)。 saveMessage除了保存之外,还可以调用类方法$this->emailMessage( $arguments )
。我想编写一个测试saveMessage的测试,并测试正确调用emailMessage(使用正确的参数),但不调用实际的emailMessage方法。
我可以做的一种方法是继承Mail,并覆盖emailMessage方法。更有吸引力的方法是模拟Messages类,并覆盖emailMessage方法,同时测试模拟对象中的saveMessage方法。但是,那时我会测试Mocked对象本身;我已经读到这是一个坏主意,但在这种情况下我不完全确定原因。为此目的使用模拟对象是否安全?有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
我认为这属于"What to test and what not to test"类别。在不知道代码的情况下,这个问题难以回答。
例如为什么参数不是正确的?他们被操纵了吗?您可以将操作代码放在自己的方法中并进行单元测试。
或者您可以在saveMessage
方法中使用asserts,只需检查单元测试中没有触发断言错误。
据我所知,这个问题与代码的设计有关,也与测试代码有关。