我正在尝试编写单元测试来模拟使用 GoMocks 进行的服务调用,这是一场真正的斗争。
我试图简化代码的一种方法是创建一个私有方法,该方法为所有模拟提供良好的响应,然后在每个需要模拟调用的不同响应的单独测试中(例如,测试模拟失败),我想要用不同的响应覆盖该调用。
例如,setupMocks fn(已擦洗)
func setupMocks(s *SSAdapterV1Suite, userId string) {
s.mockDBDao.EXPECT().Mark(userId, gomock.Any()).
Return(nil)
s.mockDBDao.EXPECT().Get(userId).
Return(userData, nil)
s.mockDBDao.EXPECT().Delete(gomock.Any(), gomock.Any()).
Return(nil)
}
当我在“成功”场景中使用 setupMocks fn 时,它工作正常。
但是,如果我尝试在另一个单元测试中使用它来测试如何处理服务调用中的错误,那么 gomocks 将使用 setupMocks fn 中的 mockResponse 设置,而不是我想要覆盖的那个。
是否有一个电话或我可以在 GoMocks 中做些什么来EXPECT()
用其他东西覆盖模拟响应而不是附加callstack
?