我想测试这种方法及其条件。
public String getType(String body) {
String type = getTypeCode(body, 1); //this
if (null == type) {
type = getTypeCode(body, 2); //this
}
return type;
}
所以我写了一个测试
@Test
public void testTypeOldToNew() {
Parser parser = createMock(Parser.class);
expect(parser.getTypeCode(BODY_2, 1)).andReturn(null);
expect(parser.getTypeCode(BODY_2, 2)).andReturn(CODE_TWO_MESSAGE);
replay(parser);
parser.getType(BODY_2);
verify(parser);
}
但是当我运行它时我遇到了错误
java.lang.AssertionError:
Unexpected method call Parser.getype("value"):
Parser.getTypeCode("value", 1): expected: 1, actual: 0
Parser.getTypeCode("value", 2): expected: 1, actual: 0
为什么呢?有什么问题?
答案 0 :(得分:3)
你无法模拟你正在测试的课程。您在模拟上呼叫parser.getType(BODY_2);
。因为你没有为该方法定义任何东西,所以没有任何事情发生(并且定义应该发生的事情没有意义,因为那时你将测试模拟框架)。
您需要模拟此类与其他类(或更好的:接口)的交互。