【问题标题】:mocking a static Spring boot controller method with powermokito使用 powermokito 模拟静态 Spring 引导控制器方法
【发布时间】:2019-04-02 04:29:58
【问题描述】:

我的一个 Spring boot 控制器方法调用了一个静态方法。我想使用 powermokito 测试控制器。 在下面找到相同的代码。 尝试调用 mockMvc.perform() 方法时出现错误 @RunWith(PowerMockRunner.class)

@PrepareForTest({StaticClass.class})

public void StaticClassTests()

{

  @Autowired

  private MockMvc mockMvc;

  @Test

  public void testStatic()

  {

    List<String> list = new ArrayList<>();

    list.add("a");

    list.add("b");

    list.add("c");

    PowerMokito.when(StaticClass.getList()).thenReturn(list);

    RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/getlist")
    .accept(MediaType.APPLICATION_JSON);

    MvcResult result = mockMvc.perform(requestBuilder)    //where the error is
            .andExpect(status().isOk())
            .andExpect(content().json("[\n" + 
                    " \"a\",\n" + 
                    " \"b\",\n" + 
                    " \"c\"\n" + 
                    "]"))
            .andReturn();

  }

}

StaticClass.getList() 是一个静态方法 我在注释行收到 java.lang.NullPointerException(即 mockMvc.perform(requestBuilder))

【问题讨论】:

  • 为什么每条语句之间都有一个空行?它不会使它更容易阅读。
  • 对于给您带来的不便,我深表歉意。

标签: java powermock powermockito spring-boot-test


【解决方案1】:

你应该在调用 perform 方法之前初始化 mockMvc。

    // Setup Spring test in standalone mode
    this.mockMvc = MockMvcBuilders.standaloneSetup(carSearchController).build();

注意: 像这里对 CarSearchController 所做的那样注入你的控制器

     @InjectMocks
     private CarSearchController carSearchController;

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 1970-01-01
    • 2020-10-08
    • 2014-08-30
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多