簡體   English   中英

模擬方法返回Null

[英]mocked method is returning Null

我正在嘗試模擬一些方法調用,但是不幸的是,我一直在返回null。 您能幫我指出我可能會出問題的地方嗎? 我正在使用when()。thenReturn(),我覺得自己正確地嘲笑了return變量。 提前謝謝了。 我是JUnit和Mockito的新手,所以如果我遺漏任何明顯的東西,我深表歉意。

ServiceTest.java

@IntegrationTest
public class ServiceTest extends TransactionalTest {
    private HistoryService orderHistoryService;
    private CMSSiteModel website;

@Mock
protected DefaultWebService orderDetailsServiceWrapper;
@Mock
protected WebsiteService websiteService;    

@Before
public void setUp()
{
    MockitoAnnotations.initMocks(this);
    website = mock(CMSSiteModel.class);
}

@Test
public void testFindOrderDetailsByConfirmationNumber() {

    when(websiteService.getCurrentSite()).thenReturn(website);

    final ResponseType response = orderHistoryService.findOrderDetailsByConfirmationNumber(OrderTestUtils.CONFIRMATION_NUMBER, OrderTestUtils.LOCATION_NUMBER);

    Assert.assertEquals("Incorrect Approver Name", OrderTestUtils.APPROVER_NAME, response.getApprovedByName());
}

和Service.java

public class HistoryService implements OrderHistoryService {

    @Autowired
    private WebsiteService websiteService;

    @Override
    public OrderDetailsServiceResponseType findOrderDetailsByConfirmationNumber(String confirmationNumber, String locationNumber) {

        CMSSiteModel test = websiteService.getCurrentSite();  //returning null
        odsrHeader.setSource(test.getOrderSource());

    }

}

我認為您假設Mockito將自動將WebsiteService注入OrderHistoryService 在Mockito執行此@InjectMocks之前,您需要使用@InjectMocks注釋OrderHistoryService InjectMocks將創建該類的普通實例,然后嘗試使用在給定測試中創建的所有InjectMocks類或間諜類填充其字段。

例如。

public class ServiceTest extends TransactionalTest {
    @InjectMocks
    HistoryService orderHistoryService;

    @Mock
    WebsiteService websiteService;

    ...

}

HistoryService websiteService不為null令人擔憂。 似乎其他一些注入正在發生,您最終得到了兩個單獨的模擬網站服務。 一個在測試類中,另一個在HistoryService 您似乎遺漏了相當一部分測試類,因此很難確定實際發生的情況。

這是我的答案:[嘗試在一個類中編寫單元測試用例]

確保websiteService在服務類中為@Mock

暫無
暫無

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

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