我試圖模擬一個存儲庫並返回保存的同一個對象。當我嘗試模擬存儲庫時出錯
這是我的代碼片段:
public TransactionType createTransactionType(TransactionTypeEnum type) {
TransactionType transactionType = new TransactionType();
transactionType.setStatus(type.code());
transactionType.setDescription(type.name());
return transactionTypeRepository.save(transactionType);
}
我試圖假裝是這樣的:
1.
public TransactionTypeRepositoryMockBuilder doSave(){
Mockito.when(this.target.save(Mockito.any(TransactionType.class)))
.then(new SaveMock<>())
.then(AdditionalAnswers.returnsFirstArg());
return this;
}
2.
public TransactionTypeRepositoryMockBuilder doSave(){
Mockito.when(this.target.save(Mockito.any(TransactionType.class))).then(new SaveMock<>());
return this;
}
3.
public TransactionTypeRepositoryMockBuilder doSave(){
Mockito.when(this.target.save(Mockito.any(TransactionType.class))).thenReturn(new TransactionType());
return this;
}
4.
public TransactionTypeRepositoryMockBuilder doSave(){
Mockito.when(this.target.save(Mockito.any(TransactionType.class))).then(AdditionalAnswers.returnsFirstArg());
return this;
}
我的生成器類
public class TransactionTypeRepositoryMockBuilder {
private final TransactionTypeRepository target;
private TransactionTypeRepositoryMockBuilder() {
this.target = Mockito.spy(TransactionTypeRepository.class);
}
public static TransactionTypeRepositoryMockBuilder create(){
return new TransactionTypeRepositoryMockBuilder();
}
public TransactionTypeRepository build() {
return this.target;
}
public TransactionTypeRepositoryMockBuilder doSave(){
Mockito.when(this.target.save(Mockito.any(TransactionType.class))).thenReturn(new TransactionType());
return this;
}
}
我收到此錯誤: _java.lang.NoSuchMethodError:org.mockito.invocation.InvocationOnMock.getArgumentAt(ILjava/lang/Class;)Ljava/lang/Object; _ 我做錯了什麼?
你是什麼mockito版本? – user7294900
這是Mockito 2.8.47 –
我發現你的輸入完全令人困惑。你爲什麼要在稱爲doSave()的方法中設置你的模擬?因此:請退後一步並向我們展示一個真實的[mcve] - 包括生產和測試用例代碼的基本部分。你在這裏展示的只是沒有多大意義(imho)。 – GhostCat