我有一个简单的控制器设置:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<String> getTestString(){
List<String> sampleTest = new ArrayList<String>();
sampleTest.add("Test");
return sampleTest;
}
}
对于这个简单的控制器,我试图使用MockMVC在Spock中编写测试:
class TestControllerTest extends Specification {
MockMvc mockMvc;
def setup(){
mockMvc = MockMvcBuilders.standaloneSetup(new TestController()).build();
}
def "testing TestController"(){
when:
MvcResult response = mockMvc.perform(get("/test/1"));
then:
response.andExpect(content().string('["Test"]'));
}
}
我拥有的JAR是:
弹簧试验:4.0.5 使用javax,servlet的API:3.0.1 斯波克弹簧:0.7-常规-2.0
运行测试后得到的错误是:
groovy.lang.MissingMethodException: No signature of method: com.crmservice.controller.TestControllerTest.get() is applicable for argument types: (java.lang.String) values: [/test]
Possible solutions: getAt(java.lang.String), grep(), grep(java.lang.Object), wait(), Spy(), any()
at com.crmservice.controller.TestControllerTest.testing TestController(TestControllerTest.groovy:27)
答案 0 :(得分:9)
是否导入了丢失的get
方法?
您需要在导入块中包含以下行:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get