Есть фрагмент кода, который я хочу покрыть модульным тестом
public List<Product> fetchProducts() {
...
String userId = anotherObj.getId()
return caller.call(client -> client.getProducts(userId));
}
примечание: я не могу изменить этот код
СейчасЭто модульный тест, который работает с использованием подстановочного знака (пропущено все, что не связано):
def anotherObj = Mock( ... )
def caller = Mock( ... )
...
when:
subject.fetchProducts()
then:
1 * anotherObj.getId() >> USER_ID
and:
1 * caller.call(_) >> mockedApiResponse
проблема
Iхотите проверить, что функция call
действительно вызывается с функцией, которая получает параметр и вызывает этот параметр с соответствующим аргументом
псевдокод
then:
1 * anotherObj.getId() >> USER_ID
and:
1 * caller.call( { it(obj -> obj.getProducts(USER_ID)) } ) >> mockedApiResponse