first := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResponse, nil)
mockClient.EXPECT().Do(gomock.Any()).Return(defaultResp, nil).After(first)
我怎样才能多次调用这两个模拟?这是调用模拟的正确方法吗?我需要先执行第一个模拟,然后再执行第二个模拟客户端。所以我遵循了这种方法。但是我需要在我的UNIT测试中称呼它们为一系列测试输入,每一次都应该在第一个执行,然后在第二个执行。但是我看到这种情况只发生了一次,而下一次只发生了第二次。
答案 0 :(得分:2)
gomock软件包提供了许多订购方法。
示例前的注释:使用给定的示例,一旦first
被调用一次,并返回其值。它将被标记为“已使用”和“已完成”,不再考虑。
如果发生这种情况,您将需要重新设置期望值。
从文档中
默认情况下,不强制要求的调用以任何特定顺序运行。可以通过使用InOrder和/或Call.After强制执行呼叫顺序依赖性。 Call.After可以创建更多不同的呼叫顺序依赖性,但是InOrder通常更方便。
订购单独的模拟游戏:
first := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResponse, nil)
second := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResp, nil)
gomock.InOrder(
first,
second,
)
看到模拟接受完全相同的参数,就可以设置...
同一模拟有多个返回结果。
mockClient.EXPECT().
Do(gomock.Any()).
Return(defaultResponse, nil).
Return(defaultResp, nil)