Spock-Test-Framework 中的模拟签名似乎不像文档中那样
Mock-Signature in Spock-Test-Framework seems not to be as in docs
在 Spock-Docs 中,Mock/Spy/Stub 使用构造函数参数,给出了这个签名:
def subscriber = Spy(SubscriberImpl, constructorArgs: ["Fred"])
(参见:http://spockframework.org/spock/docs/1.1/all_in_one.html#Spies)
然而,在 spock.mock.MockingApi 中,每个 Spy/Mock/Stub 都有几个签名,但如果它们有额外的参数,它们有一个映射作为第一个参数,然后是 class嘲笑,例如
public <T> T Spy(Map<String, Object> options, Class<T> type)
现在,我有两个问题:
1) 如果我使用文档中的顺序,Groovy/Spock 如何进行测试?因为实际上,它有效...
2) 在 IntelliJ 从 2017.3 更新到 2018.1 之后,我遇到了整个问题,之后 IntelliJ 拒绝接受 Subscriber(在上面的示例中)作为 SubscriberImpl 类型的对象,它在更新之前做了 -代码不变...如果我扭转局面并添加另一个支架和 "as Map",一切正常,因为这与 MockingApi 中的代码非常接近:
def subscriber = Spy([constructorArgs: ["Fred"]] as Map<String, Object>, SubscriberImpl)
但是无论如何,它是如何通过更新改变行为的?它以前是如何工作的?也许有人可以解除我的困惑......?
谢谢。
这是一个内置的 Groovy 功能,可以将命名参数转换为映射,请参阅
- Groovy Goodness: Named Parameters are Converted to Map
- Groovy Goodness: Turn Method Parameters Into Named Map Arguments With IntelliJ IDEA
至于为什么 IDEA 会像您描述的那样,我不知道。我也在用 IDEA 2018 看的一样。搜索 JetBrains 错误数据库,如果尚不存在则创建一个。无论如何,这只是一个装饰性的东西,但修复起来会很好。顺便说一句,由于方法签名,您还可以修复 IDE 的背景着色:
def subscriber = Spy(SubscriberImpl as Class, constructorArgs: ["Fred"])
或者像这样(更优雅也更安全):
SubscriberImpl subscriber = Spy(constructorArgs: ["Fred"])
在 Spock-Docs 中,Mock/Spy/Stub 使用构造函数参数,给出了这个签名:
def subscriber = Spy(SubscriberImpl, constructorArgs: ["Fred"])
(参见:http://spockframework.org/spock/docs/1.1/all_in_one.html#Spies)
然而,在 spock.mock.MockingApi 中,每个 Spy/Mock/Stub 都有几个签名,但如果它们有额外的参数,它们有一个映射作为第一个参数,然后是 class嘲笑,例如
public <T> T Spy(Map<String, Object> options, Class<T> type)
现在,我有两个问题:
1) 如果我使用文档中的顺序,Groovy/Spock 如何进行测试?因为实际上,它有效...
2) 在 IntelliJ 从 2017.3 更新到 2018.1 之后,我遇到了整个问题,之后 IntelliJ 拒绝接受 Subscriber(在上面的示例中)作为 SubscriberImpl 类型的对象,它在更新之前做了 -代码不变...如果我扭转局面并添加另一个支架和 "as Map",一切正常,因为这与 MockingApi 中的代码非常接近:
def subscriber = Spy([constructorArgs: ["Fred"]] as Map<String, Object>, SubscriberImpl)
但是无论如何,它是如何通过更新改变行为的?它以前是如何工作的?也许有人可以解除我的困惑......?
谢谢。
这是一个内置的 Groovy 功能,可以将命名参数转换为映射,请参阅
- Groovy Goodness: Named Parameters are Converted to Map
- Groovy Goodness: Turn Method Parameters Into Named Map Arguments With IntelliJ IDEA
至于为什么 IDEA 会像您描述的那样,我不知道。我也在用 IDEA 2018 看的一样。搜索 JetBrains 错误数据库,如果尚不存在则创建一个。无论如何,这只是一个装饰性的东西,但修复起来会很好。顺便说一句,由于方法签名,您还可以修复 IDE 的背景着色:
def subscriber = Spy(SubscriberImpl as Class, constructorArgs: ["Fred"])
或者像这样(更优雅也更安全):
SubscriberImpl subscriber = Spy(constructorArgs: ["Fred"])