gpt4 book ai didi

mocking - 有没有办法在 Spock 中进行模拟参数捕获

转载 作者:行者123 更新时间:2023-12-02 07:17:30 25 4
gpt4 key购买 nike

我环顾四周并尝试了不同的方法,但均无济于事。互联网上的例子很少,而且恕我直言,非常简单。我的用例:

(下面的“itocNetworkHandler”是模拟)

when: "we're doing stuff"
StandardResponse response = cms.doCardStuff("123", "111", order)
....
then: "we get proper calls and response object"
1 * cms.itocNetworkHandler.doNetworkCall(
{ it instanceof ReplacementRequestRecord
}, StandardResponseRecord.class) >> record

我想将参数('it')存储到模拟上的“doNetworkCall”中。

我想要参数的原因是因为我正在测试的对象应该接受我的参数,做一些事情,创建一个新对象并将其传递给我的模拟。我想确保创建的对象看起来像它应该的那样。

非常感谢指点。

最佳答案

您可以按如下方式捕获参数:

// must be declared before when-block (or inside Specification.interaction {})
def captured

when:
...

then:
1 * mock.doNetworkCall(...) >> { record, recordClass ->
// save the argument
captured = record
...
}
// use the saved argument
captured == ...

也就是说,通常有一个更简单的解决方案,例如在参数约束中检查预期记录(例如 ...doNetworkCall( { it == ... } ))。

关于mocking - 有没有办法在 Spock 中进行模拟参数捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16331230/

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