我不能在HttpSession上进行模拟。测试方法如下所示:
@GetMapping
@RequestMapping("/feed")
public String feed(HttpSession session, Model model) throws UnauthorizedException {
if (session.getAttribute("loginStatus") == null) throw new UnauthorizedException("You have to login first");
Long userId = (Long) session.getAttribute("userId");
model.addAttribute("posts", postService.feed(userId));
return "posts/feed";
}
测试结果如下所示:
@Mock
private PostService postService;
private MockMvc mockMvc;
private PostViewController controller;
@Mock
private HttpSession session;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
controller = new PostViewController(postService);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void feed() throws Exception {
when(session.getAttribute("loginStatus")).thenReturn(true);
mockMvc.perform(get("/feed"))
.andExpect(status().isOk())
.andExpect(view().name("posts/feed"))
.andExpect(model().attributeExists("posts"));
}
我总是得到未经授权的例外,但我需要避免它。如何为会话添加一些参数来模拟工作?
在配置MockHttpServlet
期间,您应该使用相关的会话方法来配置会话状态。在内部,它将为您正在构建的MockHttpServlet
创建一个MockHttpSession
。
mockMvc.perform(get("/feed")
.sessionAttr("loginStatus", true)
.sessionAttr("userId", 1234l))
.andExpect(status().isOk())
.andExpect(view().name("posts/feed"))
.andExpect(model().attributeExists("posts"));
22.13.5.测试检测 测试任务检测哪些类是通过检查编译测试类的测试类。默认情况下它会扫描所有.calss文件.可以自定义包含/排除哪些类需不要要被扫描.所使用不同的测试框架(JUnit/ TestNG)时测试类检测使用不同的标准。 当使用JUnit,我们扫描的JUnit3和JUnit4的测试类。如果任一下列条件匹配,类被认为是一个JUnit测试类: 类或父类集成自TestCase或Groovy
单元测试是用来校验程序的正确性的,然而,程序能正常运行后,往往还需要测试程序(一部分)的执行速度,这时,f就需要用到性能测试。 通常来讲,所谓性能测试,指的是测量程序运行的速度,即运行一次要多少时间(通常是执行多次求平均值)。Rust 竟然连这个特性都集成在语言基础特性中,真的是一门很重视工程性的语言。 下面直接说明如何使用。 cargo new benchit cd benchit 编辑 src
程序测试是一种找到缺陷的有效方式,但是它对证明没有缺陷却无能为力。 Edsger W. Dijkstra, “The Humble Programmer” (1972) 作为软件工程质量保障体系的重要一环,测试是应该引起我们充分注意并重视的事情。前面说过,Rust 语言的设计集成了最近十多年中总结出来的大量最佳工程实践,而对测试的原生集成也正体现了这一点。下面来看 Rust 是怎么设计测试特性的。
本章讲解 Rust 中内建的测试与评测相关知识。 测试 (testing) 评测 (benchmark)
import counter from './counter'; describe('counter reducers', () => { it('should handle initial state', () => {
下面的示例会为您测试Redux应用程序打下坚实的基础。
就像 会编译代码并运行生成的二进制文件一样,cargo test 在测试模式下编译代码并运行生成的测试二进制文件。可以指定命令行参数来改变 cargo test 的默认行为。例如,cargo test 生成的二进制文件的默认行为是并行的运行所有测试,并捕获测试运行过程中产生的输出避免他们被显示出来,使得阅读测试结果相关的内容变得更容易。 这些选项的一部分可以传递给 cargo test,而另一些则
测试用来验证非测试的代码是否按照期望的方式运行的 Rust 函数。测试函数体通常执行如下三种操作: 设置任何所需的数据或状态 运行需要测试的代码 断言其结果是我们所期望的 让我们看看 Rust 提供的专门用来编写测试的功能:test 属性、一些宏和 should_panic 属性。 作为最简单例子,Rust 中的测试就是一个带有 test 属性注解的函数。属性(attribute)是关于 Rust