簡體   English   中英

InjectMocks 對象上的 org.mockito.exceptions.misusing.NotAMockException

[英]org.mockito.exceptions.misusing.NotAMockException on InjectMocks object

我正在嘗試模擬方法的返回值,但我收到了NotAMockException

@InjectMocks
private MyService myService;
@Mock
private OtherServiceUsedInMyServiceAsAutowired otherServiceUsedInMyServiceAsAutowired;

MyService內部,我有一個名為myMethod()的方法,我想在調用此方法時返回虛擬對象。

doReturn(someDummyObject).when(myService).myMethod(any(), any(), any());

那時我收到了錯誤。 我究竟做錯了什么? 完整錯誤:

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to when() is not a mock!
Example of correct stubbing:
    doThrow(new RuntimeException()).when(mock).someMethod();

注解@InjectMocks用於將模擬注入測試對象:

@InjectMocks - 自動將模擬注入測試對象。

這並不意味着 object 本身就是一個 mock。 如果您想測試一個對象並希望該對象自動具有預先初始化的模擬實例(通過 setter 注入),則此注釋很有用。

如果要創建MyService的模擬,請使用@Mock

@Mock
private MyService myService;

這將創建MyService的模擬,您需要為該模擬指定您想要的行為。 第一件事是OtherServiceUsedInMyServiceAsAutowired不再有意義:模擬對象將不依賴於該類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM