Модульное тестирование с Mock и InvocationOnMock

Я новичок в Java Spring, мне нужно руководство по Mockito.

Я пытался протестировать свой сервисный уровень, но ему не удается проверить фиктивное имя пользователя и адрес электронной почты.

В настоящее время я действительно смущен тем, как мне это сделать правильно.

Спасибо!

UserService.java

package com.example.newproject.newproject.service;

import com.example.newproject.newproject.entity.User;

import java.util.List;

public interface UserService {
    boolean addUser(String username,String email);
    List<User> viewAllUsers();
}

UserServiceImpl.java

package com.example.newproject.newproject.service.impl;

import com.example.newproject.newproject.entity.User;
import com.example.newproject.newproject.repository.UserRepository;
import com.example.newproject.newproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;


    @Override
    public boolean addUser(String username, String email) {
        if (userRepository.findByUsernameAndEmail(username, email) == null)
        {
            User user = new User();
            user.setUsername(username);
            user.setEmail(email);
            userRepository.save(user);
            return false;

        }else{
            return true;
        }

    }

    @Override
    public List<User> viewAllUsers() {
        return userRepository.findAll();
    }
}

My Mock

@Test
public void testAddUser(){
    Mockito.when(userRepository.findByUsernameAndEmail("Google","[email protected]")).then(invocationOnMock ->  {

        User user = new User();
        return user;
    });

    boolean result =  userService.addUser("Google","[email protected]");
    Assert.assertFalse(result);

    Mockito.verify(userRepository, Mockito.times(1)).save(userArgumentCaptor.capture());
    User user = userArgumentCaptor.getValue();
    Assert.assertEquals("Google", user.getUsername());
    Assert.assertEquals("[email protected]", user.getEmail());
}

Ошибка, которую я получаю,

  java.lang.AssertionError

во время бега

Было бы полезно, если бы вы могли предоставить нам код для вашего класса обслуживания и описать, какую ошибку вы получаете, если вы хотите получить какую-либо помощь.

Adam 21.01.2019 13:50

отредактировано с помощью UserService и UserServiceImpl для получения дополнительной информации

Herindra Setiawan 21.01.2019 14:01

Mockito.verify(userRepository, Mockito.times(1)).save(User("Google","[email protected]")); @Хериндра Сетиаван

Ramzy Hassan 21.01.2019 14:03

@RamzyHassan спасибо за ответ, но я получаю сообщение об ошибке «Ожидается вызов метода»

Herindra Setiawan 21.01.2019 14:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
182
0

Другие вопросы по теме