我已经为Spock测试编写了一些Java类。当我尝试验证参数中使用的确切对象时,测试失败。
def "all events are published to subscribers"() {
given:
EventSubscriber subscriber = Mock()
when:
subscriber.shouldRegister() >> true
subscriber.interests() >> new HashSet<Intent>(Arrays.asList(COUNTER,GAUGE))
publisher.subscribe(subscriber)
def event = publisher.newEvent("test",COUNTER)
event.start()
def child = event.newChild("child",GAUGE)
event.finish()
then:
// 2 * subscriber.onCreate(event)
// 1 * subscriber.onStart(event,event.start)
// 1 * subscriber.onEnd(event,event.end)
// 1 * subscriber.onChild(event,child)
2 * subscriber.onCreate(_)
1 * subscriber.onStart(_,_)
1 * subscriber.onEnd(_,_)
1 * subscriber.onChild(_,_)
}
注释掉的行失败
groovy.lang.MissingPropertyException:没有此类属性:事件 类别:io.hypi.faf.api.EventPublisherTest
io.hypi.faf.api.EventPublisherTest中的所有事件都发布到 订阅者(EventPublisherTest.groovy:28)
http://spockframework.org/spock/docs/1.3/all_in_one.html#_argument_constraints似乎建议我可以传入一个值。第一个示例是字符串,但我认为类型无关紧要。
我做错了什么?
Spock:1.3 Groovy:2.5 groovy-test-junit5-2.5.7 JDK:11