![](/img/trans.png)
[英]Junit and Jmock to test Springs TransactionSynchronizationManager
[英]Why this JMock test is failing?
類結構如下:
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()
。 這怎么可能?
EmailAgent不使用從任何地方獲取的發件人; 它創建自己的。 所以:
sendNote
,后者創建第二個Sender(將其稱為“ b”)。 send
-尚未,因為EmailClient不知道。 與其在EmailAgent.sendNote
創建發件人, EmailAgent.sendNote
在EmailAgent.sendNote
創建一個構造函數,該構造函數將一個發件人並將其存儲在實例字段中,然后在sendNote
使用該字段。 然后,測試將其模擬的發件人傳遞給EmailAgent。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.