【发布时间】:2015-09-27 13:15:59
【问题描述】:
我想对一个将某个对象作为输入的函数进行单元测试, 处理它,当它完成时,该对象的状态应该已更改为某个值。
由于我想做“真正的”单元测试(据我了解),我只想使用提供处理功能的类, 并模拟所有其他使用的类。 为了满足这个要求,我需要模拟正在处理的对象;但是当它只是一个模拟时,它就没有可以改变的真实状态了。
示例伪代码:
object = createMock('SomeClassName');
object.whenReceives('getState').shouldReturn(0);
Processor.process(object);
assertEquals(expected = 1, actual = object.getState());
问题是我需要模拟“getState”方法来准备测试的起始状态,所以 之后我不能再使用真正的方法了。 你知道我怎样才能做到这一点,或者我应该如何改变测试的设计?
PS:我实际上是在使用 PHPUnit 和 Mockery。
感谢您的建议。
【问题讨论】:
标签: unit-testing mocking phpunit mockery