Я пишу тест Спока для класса Service, метод которого вызывает другой метод в классе Dao в приложении весенней загрузки.Однако я получаю:
Too few invocations for:
1 * dao.getAddressFromSomewhere("me") (0 invocations)
Unmatched invocations (ordered by similarity):
None
Ниже приведен исходный код и код тестирования, может кто-нибудь сообщить мне, что я сделал не так?Кажется, что дао-издевательство вообще не вызывалось и не возвращало «США».Я провел онлайн-исследование и не могу найти, что я сделал неправильно.
@Service
public class ServiceClass
{
@Autowired
private DaoClass dao;
public String getAddress(String name) {
return dao.getAddressFromSomewhere(name);
}
}
@Component
public class DaoClass {
public String getAddressFromSomewhere(String name) {
// get address from DB
......
}
}
А вот мой код тестирования Спока:
@ContextConfiguration
@Import(ServiceClass.class)
public class Test extends Specification {
@Autowired
private DaoClass dao;
@Autowired
private ServiceClass service;
@TestConfiguration
static class MockConfig {
def detachedMockFactory = new DetachedMockFactory()
@Bean
DaoClass dao() {
return detachedMockFactory.Mock(DaoClass)
}
}
def "Test Success Senario"() {
given: "dao"
dao.getAddressFromSomewhere("me") >> "USA";
when: "call service "
def actualResponse = service.getAddress("me");
then: "dao should be invoked with given response"
1 * dao.getAddressFromSomewhere("me")
actualResponse == "USA"
}
}