微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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双重发帖(要么是好的).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐