gpt4 book ai didi

unit-testing - 在Go lang中一个接一个地多次模拟具有不同响应的相同功能

转载 作者:IT王子 更新时间:2023-10-29 02:37:26 24 4
gpt4 key购买 nike

first := mockClient.EXPECT().Do(gomock.Any()).Return(defaultResponse, nil)
mockClient.EXPECT().Do(gomock.Any()).Return(defaultResp, nil).After(first)

如何多次调用这两个模拟?这是调用模拟的正确方法吗?我需要先执行第一个模拟,然后再执行第二个模拟客户端。所以我遵循了这种方法。但是我需要在我的 UNIT 测试中调用它们进行一系列测试输入。每次第一个应该先执行,然后是第二个。但我看到这只发生了一次,下一次只调用了第二个。

最佳答案

gomock 包提供了多种排序方法。

例子前的注释:使用你给出的例子,一旦 first 被调用一次,并返回它的值。它将被标记为“已使用”和“已完成”,不再考虑。

如果发生这种情况,您将需要重新设置期望值。

来自文档:

By default, expected calls are not enforced to run in any particular order. Call order dependency can be enforced by use of InOrder and/or Call.After. Call.After can create more varied call order dependencies, but InOrder is often more convenient.

Link

订购模拟的两种选择

单独模拟的排序:

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)

关于unit-testing - 在Go lang中一个接一个地多次模拟具有不同响应的相同功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com