首页 > 解决方案 > 为什么在运行 JUnit 测试时带有 @MockBean 的 Mockito 会返回意外的 Pass

问题描述

我试图弄清楚如何创建一个与 Mockito 结合使用的 MockBean。就我而言,我有两个单独的类,一个是 @Controller 我试图在另一个 @SpringBootTest Junit 测试类中模拟。

但是,每当我将 Mockito 作为一个 Junit 测试用例运行时,我都会得到意想不到的结果,当它应该真正返回false时会通过吗?

我在这里缺少某种配置吗?

我附上了这两个类的源代码来向您展示:

首先是控制器类:

package com.springboot.test.testapplication;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {

@RequestMapping("/welcome")
public String welcome(Model map) {

    map.addAttribute("welcomeMessage", "welcome");
    map.addAttribute("message", "important message");

    return "welcome";
}


//Method I'm trying to get access to
public String return100() {
    return "100";
}

}

这是测试类:

package com.springboot.test.testapplication;

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;

@SpringBootTest
class TestapplicationApplicationTests {

@MockBean
private TestController controller;

@Test
void contextLoads() {

    Mockito.when(controller.return100()).thenReturn("2");

}
}

任何提示将不胜感激..

标签: javaspringspring-bootjunitmockito

解决方案


推荐阅读