我刚开始研究Java应用程序的Spock测试框架。我没有以前的Groovy经验。我们如何使用Spock框架将模拟注入构造函数?以下是我的代码和测试示例。如何将mock对象注入构造函数?
public class ResourceClass {
private final IDynamoDBMapper factory = new DefaultDynamoDBClientFactory(DynamoDBConfig.fromProperties()).mapperClient();
private ServiceClass service;
@Inject
public ResourceClass(ServiceClass service) {
this.service = service;
}
}
我试着创建如下的测试类。
class ResourceClassTest extends Specification {
ResourceClass eventsResource
ServiceClass service
def setup() {
service = Mock(ServiceClass)
eventsResource = new ResourceClass(service)
}
但我在eventsResource =新ResourceClass(服务)
java.lang.NullPointerException: Domain name must be specified.
at java.util.Objects.requireNonNull(Objects.java:228)
任何建议得到例外下面有请?
谢谢盖尔盖伊。我更改了源代码以将DynamoDBMapper注入资源类。这仅在使用Spock或mockito时才会发生? – vamsi
运行Spock测试时会发生这种情况,但它不是spock问题,但是当您运行应用程序和运行测试时,类路径通常会有所不同。因此,如果运行应用程序时在类路径中具有dynamo数据库配置文件,但在运行测试时不需要 –