我不熟悉MyBatis和单元测试。
我有一个CourseService类,它(目前)只有一些方法可以调用并返回MyBatis映射器的等效方法(CourseMapper)。
CourseService类。
@Autowired
private CourseMapper courseMapper;
public Course getById(int id) {
return courseMapper.getById(id);
}
...
CourseMapper界面。
@Select("select from courses where id = #{id}")
public Course getById(int id);
...
我应该单元测试
课程ervice.getById(id)
?是否适合模拟映射器并使用该映射器构建服务并对getById
进行模拟调用,返回一个id作为参数传递的课程?
when(courseMapper.getCourseById(anyInt()))
.thenAnswer(this::returnCourseWithSameIdThatInTheArgument);
...
private Course CourseWithSameIdThatInTheArgument(InvocationOnMock i) {
return new Course((int)i.getArguments()[0],true,1,"","",1);
}
提前谢谢你。
一般来说,关于核查的规则:
期待莫克斯的某些行为,而不是存根的行为。
由于存根也可能记录行为,因此很容易对其进行一些验证。
您需要记住,它们的唯一目的是为以后的一些处理或命令调用提供数据(这是被测试类的实际特性)。
查询不会改变世界,因此可以调用任意次数,包括无次调用。
另一方面,命令调用(在模拟上调用)可能会产生副作用,并将改变目标对象之外的世界。
您正在尝试测试违反该规则的存根。
理想情况下,您应该模拟CourseMapper,并验证是否为CourseMapper。getById(id)用预期的id调用一次
像这样的东西
Mockito.verify(课程映射器,Mockito.times(1)). getById(id)
这样做的原因是-CourseMapper是一个不同的类,您可以假设它已经经过了很好的测试。您在这里所做的是固定不需要的CourseMapper.getById()
的行为。
我陷入了单元测试场景的一个基本问题,并将感谢帮助。 我有一个类,它调用在DB中将标志设置为true。 我的测试: 我被要求测试并检查是否正在使用相关数据调用。 由于返回类型无效,我如何测试它?
我不熟悉单元测试。参考google之后,我创建了一个测试类来测试我的控制器,如下所示: 我有以下控制器和服务类: 当我调试单元测试时,控制器中的p对象为null。我的状态是200,但不是预期的JSON响应 我错过了什么?
问题内容: 如何在Angular中对过滤器进行单元测试? 问题答案: 注入然后用 所以要测试这个模板的等效性
以下是设置: 我需要测试公共方法,以检查是否筛选了invalidObjects。如您所见,它将传递给私有的方法。该方法过滤掉无效的对象,并将有效的对象发送给web服务方法。该web服务方法不返回任何内容。因此,我不知道是否只有有效的对象被发送到web服务方法。你建议我怎么做才能检验这个案子?我正在使用Mockito框架来模拟对象。
我试图用Spock为套接字客户端和服务器编写单元测试。我应该如何在单元测试中设置服务器/客户机对,以便它能够工作? 通过在测试之外手动运行服务器类,我成功地测试了我的客户端类,但是当我试图在测试类内部初始化它时,所有的测试似乎要么挂起,要么得到一个拒绝的连接。 目前,我使用的只是Oracle的EchoServer和EchoClient代码的稍微修改版本。 客户端类: 服务器启动方法:
我在go中对gRPC服务进行单元测试时遇到困难。 我看了一下测试gRPC服务,但它对我不起作用,不确定我做错了什么。 Add方法的gRPC服务实现: Add方法的单元测试: 项目目录结构 抛出一个错误,称为。 我对非常陌生,找不到解决方法。