[英]How to mock method calls of some object which is passed as method parameter of method under JUnit Test
我正在為一些我無法更改的舊版 class 寫 JUnit。 我面臨的問題如下
public class B{
public String method2() {
//fetch some data from database and return it
}
}
public class A{
public String myMethod(B b) {
return b.method2();
}
}
如何使用 mockito 在 junit 中模擬對 method2 的調用
public class B2 extends B { // so, this is, in fact, an IS-A of B
public String method2() {
return "mockedResult";
}
}
在您的測試中,您現在將擁有如下內容:
@Test
public void testMethod() {
A toTest = new A();
assertEquals("mockedResult", toTest.myMethod(new B2());
}
這是非常簡單的方法。 但我建議閱讀 Mocking 框架,例如 Mockito 以獲得更復雜的場景。
https://www.baeldung.com/mockito-series
通過使用 Mockito,簡而言之,它會是這樣的:
public class TestClass {
@Mock
private B b;
private A toTest = new A();
@Test
public void testMethod() {
when(b.method2()).thenReturn("mockedResult");
assertEquals("mockedResult", toTest.myMethod());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.