Изначально я аннотировал репозиторий с помощью @SpyBean, чтобы отслеживать количество вызовов его методов. Затем я понял, что мне нужно аннотировать его с помощью @Mock, чтобы высмеивать то, что было возвращено из репозитория.
Итак, я получил:
...
@SpyBean
@Mock
SomeService someservice;
...
, что вызвало все мои тесты с использованием этого Сбой службы с
java.lang.IllegalStateException: Failed to load ApplicationContext
Поэтому я удалил @SpyBean, а затем все снова заработало, кроме причины, по которой я хотел использовать @SpyBean, чтобы я мог высмеивать некоторые методы, а не другие. Разве это не работает с @Mock?
Редактировать: кто-то спросил файл
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {RestApplication.class }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles({ "test" })
public class SomeServiceTest {
@Autowired
SomeService someService;
//@SpyBean
@Mock
SomeRepository someRepository;
String FILENAME = "txt";
@Before
public void setUp() {
someService = new SomeService(someRepository);
}
@Test
public void testFileName() {
when(someRepository.findSomethingByAttribute(anyString()))
.thenReturn(new SomePOJO("", FILENAME, ""));
someService.runFileName(FILENAME);
verify(someRepository, times(1)).save(any(SomePOJO.class));
}