Mam test jednostkowy, w którym kpię z klasy java.net.URI
. Ponadto tworzę jMockit NonStrictExpectation
, gdzie oczekuję wywołania URI.getPath()
i zwrócenia konkretnego ciągu.Powracaj różne wartości za każdym razem, gdy oczekiwane jest jMockit
Testowany kod dwukrotnie wywołuje URI.getPath()
, gdzie za każdym razem muszę wysłać inny ciąg znaków.
Oto mój rzeczywisty sposób badany:
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();
}
Oto kod testów jednostkowych:
@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();
}
Teraz chcę "/resource/2"
zostać zwrócone z moim oczekiwaniem gdy URI.getPath()
nazywa sekund czas. Ale zawsze uderza w pierwsze oczekiwanie i zwraca "/recourceGroup/1"
. To jest mój problem.
Jak to się stało? Nie mogę naprawdę używać StrictExpectations
z wielu powodów i będę musiał trzymać się z numerem NonStrictExpectations
.
Pracowałem jak urok ... Dzięki :) –
Świetnie, cieszę się, że zadziałało! –
Link do dokumentacji w odpowiedzi jest uszkodzony. Oto zaktualizowany [link] (http://jmockit.org/tutorial/Mocking.html#results) –