0
类结构如下:为什么这个JMock测试失败?
public interface Sender {
void send(String note);
}
public interface Agent {
void sendNote(String note);
}
public class Emailer implements Sender {
void send(String note) {
//...do something
}
}
public class EmailAgent implements Agent {
void sendNote(String note) {
Sender sender = new Emailer();
sender.send();
}
}
我已经实现了我的JMock的/ JUnit测试是这样的:
@Rule
public JUnitRuleMockery context = new JUnitRuleMockery();
Sender sender = context.mock(Sender.class);
@Test
public void test1() {
context.checking(new Expectations() {{
exactly(1).of(sender).send("test");
}});
new EmailAgent().sendNote("test");
}
由于种种原因,因为它说sender.send()
则永远不会调用上面的失败。这怎么可能?
你的'新的EmailClient()'对于模拟'sender'对象一无所知。如果你将它传递给方法,无论是通过构造函数还是方法本身,它都会像你想要的那样工作。相反,您正在测试类中创建模拟'sender',而在'test1'方法中创建另一个模拟器。 –