У меня есть модульный тест, в котором я издеваюсь над классом java.net.URI
. Кроме того, я создаю jMockit NonStrictExpectation
, где я ожидаю вызова URI.getPath()
и возврата определенной строки.
Тестируемый код дважды вызывает URI.getPath()
, где мне нужно каждый раз отправлять другую строку.
Вот мой фактический тестируемый метод:
public void validateResource() {
// some code
URI uri = new URI(link1.getHref());
String path1 = uri.getPath();
// some more code
uri = new URI(link2.getHref());
String path2 = uri.getPath();
}
Вот код модульного теста:
@Mocked URI uri;
@Test
public void testValidateResource() {
new NonStrictExpectations() {
{
// for the first invocation
uri.getPath(); returns("/resourceGroup/1");
// for the second invocation [was hoping this would work]
uri.getPath(); returns("/resource/2");
}
};
myObject.validateResource();
}
Теперь я хочу, чтобы "/resource/2"
возвращалось из моего ожидания, когда URI.getPath()
вызывается во второй раз. Но он всегда соответствует первому ожиданию и возвращает "/recourceGroup/1"
. Это моя проблема.
Как мне это сделать? Я не могу использовать StrictExpectations
по ряду причин, и мне придется придерживаться NonStrictExpectations
.