如何为在数据库中保存记录的 void 方法编写 JUnit 5 测试?

问题描述

我在 Spring Boot 中有一个简单的待办事项应用程序。我正在尝试为 createtodo 方法编写一个测试,该方法将待办事项保存在存储库/数据库中。我在 java.lang.NullPointerException

线上收到 todoServiceImpl.createtodo(newTodo);

我错过了什么?是否可以在不模拟存储库的情况下对其进行测试?

TodoServiceImpl.java

@AllArgsConstructor
@Slf4j
@Service
public class TodoServiceImpl implements TodoService {

    private final TodoRepository todoRepository;

    @Override
    public void createtodo(Todo todo) {
        todoRepository.save(todo);
    }
}

TodoServiceImpltest.java

class TodoServiceImpltest {

    @Mock
    private TodoRepository todoRepository;

    private Todo todo;
    private TodoServiceImpl todoServiceImpl;

    @BeforeEach
    public void setup(){
        todoServiceImpl = new TodoServiceImpl(todoRepository);
    }

    @Test
    @displayName("New todo should be saved")
    void createtodotest() {
        
        // Setup
        Todo newTodo = Todo.builder().id("1").todo("Shopping").build();
        todoServiceImpl.createtodo(newTodo);

        // Expected behavior
        Optional<Todo> todo = todoRepository.findById("1");

        // Assert
        assertEquals(todo.getTodo(),"Shopping");
        assertTrue(todo.isPresent());
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)