У меня проблема с макетированием в spock, моя переменная systemTaskOptional имеет значение null, тест выдает ошибку. Вот мой тестовый код и часть кода с бизнес-логикой, где выбрасывается значение null.
def "should get system tasks and check if done - mark as success" () {
given:
systemTasksRepository.findByUserIdAndDoneFalse(_) >> getSystemTasksAll()
userApiService.getById(_) >> UserSnapshot.builder().storeAuthorities(Set.of(StoreAuthoritySnapshot.builder().role(StoreRole.OWNER).build())).companyAuthority(CompanyAuthoritySnapshot.builder().companyId(1L).build()).build()
systemTasksRepository.findByUserId(_) >> getSystemTasksAll()
systemTasksRepository.findByUserIdAndByTaskCode(_,_) >> Optional.of(SystemTask.builder().build())
when:
List snapshots = tasksService.getSystemTasksAndCheck(1L)
then:
snapshots.size() == 2
1 * systemTasksRepository.findByUserIdAndByTaskCode(1L, RepositoryTasksService.SystemTaskTypes.CREATE_STORE)
1 * systemTasksRepository.findByUserIdAndByTaskCode(1L, RepositoryTasksService.SystemTaskTypes.CREATE_COMPANY)
}
if (notDoneSystemTasks.contains(SystemTaskTypes.CREATE_COMPANY)) {
CompanyAuthoritySnapshot authoritySnapshot = userApiService.getById(userId).getCompanyAuthority();
if (Objects.nonNull(authoritySnapshot) && Objects.nonNull(authoritySnapshot.getCompanyId())) {
Optional systemTaskOptional = systemTasksRepository.findByUserIdAndByTaskCode(userId, SystemTaskTypes.CREATE_COMPANY); systemTask.setDone(true));
}
}
Я определяю сервис следующим образом:
private TasksMapper tasksMapper = Spy()
private SystemTasksRepository systemTasksRepository = Mock()
private UserApiService userApiService = Mock()
@Subject
private TasksService tasksService = new RepositoryTasksService(tasksMapper, systemTasksRepository, userApiService)
Это трассировка стека:
Connected to the target VM, address: '127.0.0.1:51363', transport: 'socket'
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/Users/developer/.m2/repository/org/codehaus/groovy/groovy/2.5.8/groovy-2.5.8.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.NullPointerException
at com.nvt.pupil.tasks.service.service.RepositoryTasksService.checkIfDone(RepositoryTasksService.java:53)
at com.nvt.pupil.tasks.service.service.RepositoryTasksService.getSystemTasksAndCheck(RepositoryTasksService.java:38)
at com.nvt.pupil.tasks.service.service.RepositoryTasksServiceSpec.should get system tasks and check if done - mark as success(RepositoryTasksServiceSpec.groovy:65)
Подробнее здесь: https://stackoverflow.com/questions/792 ... rexception
Spock Mock не работает, тест выдает исключение NullPointerException ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1769597860
Anonymous
У меня проблема с макетированием в spock, моя переменная systemTaskOptional имеет значение null, тест выдает ошибку. Вот мой тестовый код и часть кода с бизнес-логикой, где выбрасывается значение null.
def "should get system tasks and check if done - mark as success" () {
given:
systemTasksRepository.findByUserIdAndDoneFalse(_) >> getSystemTasksAll()
userApiService.getById(_) >> UserSnapshot.builder().storeAuthorities(Set.of(StoreAuthoritySnapshot.builder().role(StoreRole.OWNER).build())).companyAuthority(CompanyAuthoritySnapshot.builder().companyId(1L).build()).build()
systemTasksRepository.findByUserId(_) >> getSystemTasksAll()
systemTasksRepository.findByUserIdAndByTaskCode(_,_) >> Optional.of(SystemTask.builder().build())
when:
List snapshots = tasksService.getSystemTasksAndCheck(1L)
then:
snapshots.size() == 2
1 * systemTasksRepository.findByUserIdAndByTaskCode(1L, RepositoryTasksService.SystemTaskTypes.CREATE_STORE)
1 * systemTasksRepository.findByUserIdAndByTaskCode(1L, RepositoryTasksService.SystemTaskTypes.CREATE_COMPANY)
}
if (notDoneSystemTasks.contains(SystemTaskTypes.CREATE_COMPANY)) {
CompanyAuthoritySnapshot authoritySnapshot = userApiService.getById(userId).getCompanyAuthority();
if (Objects.nonNull(authoritySnapshot) && Objects.nonNull(authoritySnapshot.getCompanyId())) {
Optional systemTaskOptional = systemTasksRepository.findByUserIdAndByTaskCode(userId, SystemTaskTypes.CREATE_COMPANY); systemTask.setDone(true));
}
}
Я определяю сервис следующим образом:
private TasksMapper tasksMapper = Spy()
private SystemTasksRepository systemTasksRepository = Mock()
private UserApiService userApiService = Mock()
@Subject
private TasksService tasksService = new RepositoryTasksService(tasksMapper, systemTasksRepository, userApiService)
Это трассировка стека:
Connected to the target VM, address: '127.0.0.1:51363', transport: 'socket'
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/Users/developer/.m2/repository/org/codehaus/groovy/groovy/2.5.8/groovy-2.5.8.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.NullPointerException
at com.nvt.pupil.tasks.service.service.RepositoryTasksService.checkIfDone(RepositoryTasksService.java:53)
at com.nvt.pupil.tasks.service.service.RepositoryTasksService.getSystemTasksAndCheck(RepositoryTasksService.java:38)
at com.nvt.pupil.tasks.service.service.RepositoryTasksServiceSpec.should get system tasks and check if done - mark as success(RepositoryTasksServiceSpec.groovy:65)
Подробнее здесь: [url]https://stackoverflow.com/questions/79214573/spock-mock-not-working-test-throws-nullpointerexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия