Я работаю над проектом J2EE, который использует JIRA's REST Client. Этот клиент возвращает объект Jira issue
. Некоторые из полей Issue
класса key
, self
, id
, summary
, и т.д. и т.п. self
поле здесь в основном URI.
Для примера http://jira.company.com/rest/api/2.0/issue/12345
У меня есть прецедент, где я должен получить хост из указанного URI.Как выполнить модульный вызов с использованием метода Mockito
Я могу сделать это чем-то вроде issue.getSelf().getHost()
.
issue.getSelf()
возвращает объект типа 'URI', и для получения хоста я могу просто использовать метод getHost()
, предоставляемый классом URI
, который возвращает URL-адрес хоста в формате String
.
Все работает нормально. Я столкнулся с проблемой в модульном тестировании этого фрагмента кода с использованием Mockito. Я не знаю, как издеваться над цепными вызовами метода.
У меня есть следующий фрагмент кода.
private static final String JIRA_HOST = "jira.company.com";
@Mock private com.atlassian.jira.rest.client.api.domain.Issue mockIssue;
@Before
public void setup() {
when(mockIssue.getSelf().getHost()).thenReturn(JIRA_HOST);
}
Здесь я получаю Null Pointer Exception
.
После долгих исследований я узнал, что мне нужно будет использовать @Mock(answer = Answers.RETURNS_DEEP_STUBS) private com.atlassian.jira.rest.client.api.domain.Issue mockIssue;
.
Но это также дает мне Null Pointer Exception
.
Может кто-нибудь сказать мне, как я могу издеваться над цепными вызовами метода.
Вы можете создать http://stackoverflow.com/help/mcve с фактическим кодом и тестового кода, как мы Что ж. – StackFlowed
@StackFlowed, вы хорошо понимаете, фрагмент кода, который я добавил к описанию, охватывает части 'M',' C' и 'V'. Я не думаю, что абсолютно необходимо вставить весь код, чтобы сделать его исполняемым. Фрагмента кода достаточно, чтобы ответить на вопрос. Я не вижу действительной причины, по которой должен быть предоставлен какой-либо дополнительный код (и я даже не предоставил), чтобы ответить на мой вопрос. –