Спок и Groovy: назначение переменных приводит к нулю - PullRequest
0 голосов
/ 07 ноября 2019

У меня проблема с тестом в Споке:

@Subject
def mutation = new OrderedServicesMutation(long list of constructor elements here)

def "should order service and create address"() {
    given:
    def command = new OrderServiceCommand(1L, 2L, new Date(), "SomeAddress")
    def user = new User(id: command.userId)
    def address = new String()
    def service = new Service(id: command.serviceId)
    and:
    userRepository.findById(command.userId) >> Optional.of(user)
    serviceRepository.findById(command.serviceId) >> Optional.of(service)

    when:
    def result = mutation.orderService(command)

    then:
    with(result) {
        user == user
        address == address
        service == service
    }
}

OrderedServicesMutation.java:

@Component
@AllArgsConstructor
public class OrderedServicesMutation implements GraphQLMutationResolver {

// imports removed for readibility

    @Transactional
@PreAuthorize("hasAnyAuthority('ACCOUNT_OWNER','USER')")
public OrderedService orderService(OrderServiceCommand command) {
    OrderedService orderedService = orderedServiceRepository.save(
            orderedServiceMapper.mapWithHistory(
                    userRepository.findById(command.getUserId()).orElseThrow(() -> new NotFoundException(User.class)),
                    command.getAddress(),
                    serviceRepository.findById(command.getServiceId()).orElseThrow(() -> new NotFoundException(Service.class)),
                    command.getDate()
            )
    );
    orderedServicePublisher.publish(orderedService);

    return orderedService;
}

Метод должен возвращать объект типа OrderedService, и обычно это происходит во время выполнения, но когда я запускаю этот тест, я получаю:

Target of 'with' block must not be null

Отладка теста показывает, что переменная result равна нулю ...

Почему Спок не присваивает результат mutation.orderService(command) переменной result?

...