У меня есть простой строки кода:ошибка в насмешливый вложенные вызовы
DraftCampaignDetails createdDraft = draftCampaignI.createDraftCampaign(ConvertionUtil
.getDraftCampaignDetailsfromCreateDraftRequest(request));
Я пытаюсь издеваться это так:
ConvertionUtil action1 = PowerMockito.mock(ConvertionUtil.class);
when(action1.getDraftCampaignDetailsfromCreateDraftRequest(request)).thenReturn(details);
when(draftCampaignI.createDraftCampaign(details)).thenReturn(details);
Но я получаю эту ошибку:
when() requires an argument which has to be 'a method call on a mock'.
Добавление всего тестового класса для большей ясности:
public class DraftCampaignActivityTest {
@Mock
IDraftCampaign draftCampaignI;
/* @Mock
ConvertionUtil util;*/
@Before
@SuppressWarnings("unchecked")
public void setup()
{
MockitoAnnotations.initMocks(this);
}
@Test
public void createDraft_newDraft() {
DraftCampaignActivity draftContoller = new DraftCampaignActivity();
CreateDraftCampaignRequest request = createRequest();
DraftCampaignDetails details = buildDraftDetails();
if(draftCampaignI != null){
System.out.println("sccdscscd");
}
/*
if(util != null) {
System.out.println("wewewew");
}*/
/// ConvertionUtil action1 = PowerMockito.mock(ConvertionUtil.class);
PowerMockito.mockStatic(ConvertionUtil.class);
PowerMockito.when(
ConvertionUtil.getDraftCampaignDetailsfromCreateDraftRequest(request)
).thenReturn(details);
when(draftCampaignI.createDraftCampaign(details)).thenReturn(details);
// when(util.getDraftCampaignDetailsfromCreateDraftRequest(request)).thenReturn(details);
CreateDraftCampaignResponse response = new CreateDraftCampaignResponse();
draftContoller.createDraftCampaign(request);
response.setDraftCampaignId(details.getDraftId());
Assert.assertEquals(response.getDraftCampaignId(),"ww");
}
private DraftCampaignDetails buildDraftDetails() {
DraftCampaignDetails details = new DraftCampaignDetails();
details.setDraftId("ww");
return details;
}
private CreateDraftCampaignRequest createRequest() {
CreateDraftCampaignRequest request = new CreateDraftCampaignRequest();
request.setCampaignInfo("campaignInfo");
request.setMarketplaceId("adadedaedaed");
DraftCampaignDetailsBase base = new DraftCampaignDetailsBase();
Money money = new Money();
money.setCurrencyCode("USD");
money.setMillicents(10L);
base.setCampaignBudget(money);
base.setCampaignName("name");
base.setDraftCampaignState("DRAFT");
request.setDraftCampaignDetailsBase(base);
return request;
//request
}
Я новичок в Mockito и Powermock. пожалуйста помоги! Любая помощь будет оценена!
Является ли 'draftCampaignI' насмешкой? – dreamer
Вы не хотите 'когда (draftCampaingnI.createDraftCampaign ......' возвращать 'action1' вместо' details'? – dreamer
No @malka. CreateDraftCampaign принимает объект детали, образованный с ConvertionUtil, и возвращает объект details. Подробнее см. Здесь http://stackoverflow.com/questions/41554497/mocking-nested-function-is-giving-npe, пожалуйста, помогите! – user3681970