我试图测试我的项目使用BDD,因此我使用黄瓜.问题是,当我想测试ProductController时,我不能正确地模拟我的ProductService,我得到了NullPointerException -我的服务是null.下面是我的步骤代码.
@SpringBootTest
@AutoConfigureMockMvc
public class ProductControllerSteps {
long productId;
Product product;
@Autowired
MockMvc mockMvc;
@MockBean
ProductService service;
private ResultActions result;
@Given("user has a valid product id")
public void user_has_a_valid_product_id() {
productId = 1L;
product = new Product();
product.setId(productId);
Mockito.when(service.getProductById(productId)).thenReturn(product);
}
@When("user makes GET request")
public void user_makes_get_request() throws Exception {
result = mockMvc.perform(MockMvcRequestBuilders.get("/api/products/"+productId).accept(MediaType.APPLICATION_JSON_VALUE)).andDo(print());
}
@Then("system returns product data")
public void system_returns_product_data() throws Exception {
result.andExpect(status().is2xxSuccessful());
}
}
正如我在黄瓜指南中看到的,我也为黄瓜配置创建了这样一个类:
@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("features")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty")
public class RunCucumberTest {
}
此外,还包括:
@CucumberContextConfiguration
@SpringBootTest
@AutoConfigureMockMvc
@ContextConfiguration(classes = ShopApiApplication.class)
public class SpringGlue{
}
我试着用moockito模拟我的服务,但每种配置都不起作用,并导致空指针异常,我不知道如何让它工作.