提问人:Meghana Tulla 提问时间:11/15/2023 更新时间:11/15/2023 访问量:47
使用 MockMVC 时未选取 Application.yml 值
Application.yml values not picked when using MockMVC
问:
我正在使用 MockMVC 来测试 API 调用。API 在内部使用 application.yml 中的一些值来获取一些值。相同的值为 null,我得到一个 NullPointerException。你能帮帮我吗?
我尝试在不使用 MockMVC 的情况下测试另一个 GET 调用,它工作正常。我不能使用该方法,因为它不支持 MultipartFile 作为主体。
请找到下面的代码以供参考
@AutoConfigureMockMvc
@ExtendWith(SpringExtension.class)
@WebMvcTest(MyController.class)
@SpringBootTest
public class MyControllerTest {
private String token = null;
private String url=null;
MockMvc mockMvc;
public CceControllerTest() {
GenerateTokenTest generateToken = new GenerateTokenTest();
try {
this.url = TestingConstant.ip +TestingConstant.port + "cce";
this.token=generateToken.getToken();
} catch (Exception e) {
e.printStackTrace();
}
}
@Before
public void before() {
MockitoAnnotations.openMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(new MyController()).build();
}
@Test
public void getdata() {
try {
String u = this.url + "/getdata";
mockMvc.perform(
MockMvcRequestBuilders.get(u).header("Authorization", "Bearer" + token))
.andExpect(MockMvcResultMatchers.status().isOk());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void excelImportNew() {
try {
String apiUrl = this.url + "/excelImportNew";
MockMultipartFile file = new MockMultipartFile("file", "test.csv", "text/csv", "CSV content".getBytes());
String State = "Himachal Pradesh";
String District = "Hamirpur";
String userName = "abcd";
mockMvc.perform(
MockMvcRequestBuilders.multipart(apiUrl).file(file).header("Authorization", "Bearer" + token)
.param("State", State).param("District", District).param("userName", userName))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("File uploaded successfully"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
您能否提供您的建议
提前致谢:)
尝试通过自动连接 WebAppContext 来使用 webAppContextSetup(),但这会抛出一个 NullValueException,说没有找到 WebAppContext。
答: 暂无答案
评论
@Before
@SpringBootTest
@Autowired
MockMvc
@ExtendWith
@AutoConfigureMockMvc
@WebMvcTest
@Autowired
MockMvc
@Test