我需要模擬這樣的:
使用mockito嘲笑鏈式方法調用?
void handleCellPreview(CellPreviewEvent<List<String>> event) {
Element cellElement = event.getNativeEvent().getEventTarget().cast();
}
我這樣做:
CellPreviewEvent<List<String>> cellPreviewEvent = Mockito.mock(
CellPreviewEvent.class, Mockito.RETURNS_DEEP_STUBS);
Element cellElement = Mockito.mock(Element.class, Mockito.RETURNS_DEEP_STUBS);
EventTarget eventTarget = Mockito.mock(EventTarget.class);
Mockito.when(cellPreviewEvent.getNativeEvent().getEventTarget().cast()).thenReturn(cellElement);
而且我收到以下錯誤:
testHandleCellPreview(client.view.MyViewTest)java.lang.NullPointerException
at com.google.gwt.dom.client.NativeEvent.getEventTarget(NativeEvent.java:137)
atclient.view.MyViewTest.testHandleCellPreview(MyViewTest.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
我也見過,山姆e question question:
mock or stub for chained call
有誰能指出我缺少的東西嗎?
感謝,
莫希特
什麼是'testHandleCellPreview'的76行?您使用的是哪個版本的GWT? –
**不要模擬你不擁有的類型**這是一件壞事,例如:如果外部類型改變行爲,你將不會在你的測試中看到它,如果外部類型被重構或者你必須重寫所有的測試。您應該寫一個反腐敗層(或者包裝或橋樑),您只能使用集成測試進行測試。此外上面的代碼表明,你打破**德米特法**,你應該改爲**告訴,不要問**原則。希望這會有所幫助:) – Brice
@John行#76是對我的方法(測試中)的調用。我正在使用GWT 2.5 – EMM