我在一个类中设置了一个简单的Spring REST方法,它应该只返回在POST请求中发送给它的文本作为响应。MyService.java类中的My方法:
@RequestMapping(value = "/my/url", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE, produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> myMethod(@RequestBody final String body) {
return new ResponseEntity<String>(body, HttpStatus.OK);
}
我有一个单元测试,它使用Spring的MockMvc来测试方法:
@Autowired
private MyService service;
private MockMvc mockMvc;
@Before
public void setup() throws Exception {
mockMvc = standaloneSetup(service).build();
}
@Test
public void myTest() throws Exception {
Assert.assertNotNull(service); // Class has been instantiated
final String content = "Hello world";
final String url = "/my/url";
final MvcResult result = mockMvc.perform(post(url) //
.content(content) //
.accept(MediaType.TEXT_PLAIN_VALUE)) //
.andExpect(status().isOk()) //
.andReturn();
}
415是“内容不受支持”错误。
Spring版本4.1.7。
关于我做错了什么有什么建议吗?提前道谢。
修好了。执行POST时缺少内容类型。我将此添加到测试中,并且成功地工作了:
.header("Content-Type", MediaType.TEXT_PLAIN_VALUE)
虽然这个测试可能是微不足道的,但它说明了单元测试的基本元素。 我们使用解释这个测试是什么,我们使用来断言我们从测试中得到什么样的结果。 这些是用户定义的,因此在这些消息中描述性和准确性是一个好主意。 诸如“应该工作”或“测试服务”之类的消息不能真正解释发生了什么,并且在整个应用程序上运行多个测试时可能会产生混淆。 我们的实际测试是基本的,我们使用制定一个场景,并使用来断言我们从该场景预期的结果条件
import { CounterActions, INCREMENT_COUNTER, DECREMENT_COUNTER, } from './counter'; // Mock out the NgRedux class with just enough to test what we want. class MockRedux extends NgRedux<any> { c
我用Robolectric测试写了一个简单的hello-world。 我已经向build.gradle添加了正确的依赖项: 下面是我要测试的简单: 我运行的是Android Studio2.0预览版3B。 问题是:如何避免失败?
编辑:我还尝试打印出,它表示有1。
我用Spock测试Java代码。我测试这段代码: 我写了一个测试: 它失败是因为抛出了另一个CustomException。但是在块中,我捕获这个异常并抛出一个,因此我希望我的方法将抛出,而不是。如何测试它?
我有一个方法: 这是用户授权测试的样子: 有没有办法检查用户输入错误密码的情况?因为在我发送错误密码的情况下,它不起作用,因为 使在你检查密码之前返回结果。