当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot MockMvc单元测试中模拟自动连接的依赖关系?

司寇祺
2023-03-14

我扩展了基本的Spring Boot示例,向我的控制器添加了一个“自动连接”的存储库依赖项。我想修改单元测试,为该依赖注入一个Mockito mock,但我不知道如何做。

我期待我能做这样的事情:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ExampleControllerTest {

    private MockMvc mvc;

    @InjectMocks
    ExampleController exampleController;

    @Mock
    ExampleRepository mockExampleRepository;

    @Before
    public void setUp() throws Exception {
      MockitoAnnotations.initMocks(this);
    mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();
    }

    @Test
    public void getExamples_initially_shouldReturnEmptyList() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/example").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("[]")));
    }
}

但它不会将mock注入MockMvc。有人能解释如何使用@Autow的依赖项而不是构造函数参数来做到这一点吗?

共有1个答案

微生令
2023-03-14

请使用< code > @ run with(mockitojunitrunner . class)而不是< code > @ run with(spring JUnit 4 class runner . class),并且您必须使用< code > example controller example controller;字段,而不是在第< code > MVC = mockvcbuilders . standalone setup(new example controller())行创建一个新字段。build();

 类似资料:
  • 问题内容: 我试图在将其他模块作为依赖项的模块中进行单元测试控制器代码的单元化,但是还没有弄清楚如何正确模拟它们。 我正在使用Jasmine Framework,并使用Karma(Testacular)运行测试。 模块代码 规格代码 我得到的错误是Karma是“ no module af.widgets”,因此显然我没有对模块依赖项进行模拟。有什么提示吗? 问题答案: 如果要模拟声明一个或多个服务

  • 问题内容: 通常的问题是如何模拟(作为一组测试用例的一部分)缺乏网络连接,因为这是某些测试用例中的重要考虑因素。有没有一种方法可以通过Java API(或通过JVM选项)来执行,以便某些测试用例可以在网络断开的情况下运行?(模拟还是真实?)。 更具体的情况(如果没有普遍适用的解决方案)是我正在做大量的XML文件处理(包括XSD验证),并且我需要确保没有从网络上获取任何内容,特别是属性值(提示)未使

  • 单元测试的正确方法是什么?理想情况下,我只想验证某个程序的(模拟)实例调用了主方法中的run()方法。我知道我可以创建一个setter来设置某个程序的实例,但是它看起来像一种代码味道,因为它除了启用更容易的测试之外没有做任何事情?与run()方法上的公共访问器相同。为了测试的目的,它是自由的。如果它是私人的,我如何测试它?我正在寻找类的变化,也许应用一些设计模式来缓解这个问题。

  • 我正在使用jUnit 5为我的Spring引导服务类做单元测试。在服务类中,我是自动装配对象,用于调用其他类中的方法。在测试用例中,@Mock没有为@Autow的类创建对象。在这里,我给出了我的代码。 我的服务级别: 我的组件类 : 我的单元测试类: pom.xml 文件 : 在运行此测试时,我在imageProcessor.dummy(name)中获得空指针异常;

  • 问题内容: 我正在使用RestTemplate 方法发布到端点。在我的测试文件中,我正在测试POST方法。但是用我目前的测试,我得到了POST请求。在测试文件中发出POST请求时,我需要模拟API的帮助 这是我的主文件 这是我的测试文件 问题答案: 您正在测试DataTestRepo类内部的逻辑,因此您不应模拟它。RestTemplate是DataTestRepo内部的一个依赖项,因此这正是您需要