在Spock测试中应用参数约束

问题描述 投票:0回答:1

我已经为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.all事件发布到订阅者数(EventPublisherTest.groovy:28)

[http://spockframework.org/spock/docs/1.3/all_in_one.html#_argument_constraints似乎建议我可以传入一个值。第一个示例是字符串,但我认为类型无关紧要。

我在这方面做错了什么?

Spock:1.3Groovy:2.5groovy-test-junit5-2.5.7JDK:11

我已经为Spock测试编写了一些Java类。当我尝试验证参数中使用的确切对象时,测试失败。 def“所有事件都发布给订阅者”(){...

java groovy spock
1个回答
0
投票

在交互测试中使用的对象实例应在given部分中定义。

© www.soinside.com 2019 - 2024. All rights reserved.