我剛開始研究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數據庫配置文件,但在運行測試時不需要 –