我想執行一個junit測試使用Mockito對toEntity函數。如何使用Mockito JUNIT一個java.util.Function
@Component
public class MyEntityTransform {
public Function<MyDTO , MyEntity> toEntity = new Function<MyDTO , MyEntity >() {
@Override
public MyEntity apply(MyDTO record) {
return new MyEntity();
}
};
}
不幸的是,toEntity是NULL當我嘲笑類,我不知道我怎樣才能正確地進行測試。
@RunWith(MockitoJUnitRunner.class)
public class MyTest {
@InjectMocks
private MyService _classUnderTest;
@Mock
private MyEntityTransform myEntityTransform
@Before
public void setUp() {
Mockito.when(this.myEntityTransform.toEntity.apply(Mockito.anyObject())).thenReturn(...);
}
}
當我運行JUnit測試,給的Mockito我的錯誤:
顯示java.lang.NullPointerException org.mockito.exceptions.misusing.InvalidUseOfMatchersException:這裏檢測 錯位的參數匹配:
- >在com.example.MyTest.setUp(MyTest.java:38)
無法使用驗證或ST的外參數匹配器ubbing。 正確使用參數匹配器的示例: when(mock.get(anyInt()))。thenReturn(null); doThrow(new RuntimeException())。when(mock).someVoidMethod(anyObject()); 驗證(模擬).someMethod(包含(「富」))
而且,這個錯誤可能會顯示出來,因爲你使用參數的匹配與 方法不能被嘲笑。以下方法不能爲 存根/驗證:final/private/equals()/ hashCode()。不支持在非公共父類上聲明的模擬方法 。
你有什麼建議嗎?
在這裏絕對沒有理由使用模擬。當測試使用B的A時,使用嘲諷來爲A提供假B。嘲笑你正在測試的東西沒有意義。 –
我不明白。如果你想測試'Function'爲什麼涉及到'Mockito'? –
對不起,我想在另一個測試中使用函數toEntity作爲模擬。 –