0

我正在尝试使用 PHPUnit 对 Mail 类的方法编写测试。我正在测试的方法是 saveMessage($arguments)。saveMessage,除了保存,还可以调用类方法,$this->emailMessage( $arguments ). 我想编写一个测试 saveMessage 的测试,并测试 emailMessage 是否被正确调用(使用正确的参数),但不调用实际的 emailMessage 方法。

我可以做到的一种方法是将 Mail 子类化,并覆盖 emailMessage 方法。一种更吸引人的方法是模拟 Messages 类,并覆盖 emailMessage 方法,同时在模拟对象中测试 saveMessage 方法。但是,然后我将测试 Mocked 对象本身;我读过这是一个坏主意,但在这种情况下,我不完全确定为什么。为此目的使用模拟对象是否安全?有没有更好的方法来处理这个?

4

1 回答 1

0

我认为这属于“测试什么和不测试什么”这一类在不知道代码的情况下很难回答这个问题。

例如,为什么论点正确?他们被操纵了吗?您可以将操作代码放在它自己的方法中并对其进行单元测试。

或者你可以在你的方法中使用断言saveMessage,然后在你的单元测试中检查没有触发断言错误。

据我所知,这个问题既关乎代码设计,也关乎测试。

于 2012-09-07T21:26:36.263 回答