java – 无法在spock中的null对象上调用方法leftshift()

下面的代码是spock测试的一个非常基本的例子.当我运行它时,它会出现以下错误

无法在null对象上调用方法leftshift()

为什么,我如何使我的代码工作?

另外,leftshift和rightshift在spock中的用途究竟是什么.

import spock.lang.*;

class Publisher {
     List <Subscriber> subscribers      
     void send (String message){}   
}

interface Subscriber {
    void receive(String message)
}

public class Test1 extends Specification {

    Publisher publisher = new Publisher()
    def subscriber = Mock(Subscriber)
    def subscriber2 = Mock(Subscriber)

    def setup() {           
        (publisher.subscribers) << subscriber
        (publisher.subscribers) << subscriber2
    }

    def "should send message to subscriber"() {

        when:
        publisher.send("hello")

        then:
        1 * subscriber.receive("hello")
        1 * subscriber2.receive("hello")
    }
}

解决方法:

这是Publisher类中的一个错误,它不会初始化其订阅者字段(因此是NPE). list<< elem是list.add(elem)的Groovy快捷方式.要了解有关使用Spock进行模拟的更多信息,请访问http://docs.spockframework.org.

PS:请不要在这里和http://forum.spockframework.org双重发帖(要么是好的).

上一篇:33.MySQL中的视图


下一篇:linux – 在jenkins管道上运行bash命令