gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:13 26 4
gpt4 key购买 nike

下面的代码是 spock 测试的最基本示例。当我运行它时,它给出了以下错误

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

为什么会这样,我怎样才能使我的代码正常工作?

另外,spock 中 leftshiftrightshift 的具体用途是什么。

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 类中的一个错误,它没有初始化它的 subscribers字段(因此是 NPE)。 list << elemlist.add(elem) 的 Groovy 快捷方式.要了解更多关于使用 Spock 模拟的信息,请访问 http://docs.spockframework.org .

PS:请不要在这里和http://forum.spockframework.org上重复发帖(两者都可以)。

关于java - 无法在 spock 中的空对象上调用方法 leftshift(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com