[英]Mocked object returning null
我是 mocking 和 object 像這樣:
@InjectMocks
private AuroraRepoImpl auroraRepo;
@Mock
private Connector4AuroraDB connector4AuroraDB;
AuroraRepoImpl
是 class, connector4AuroraDB
是我需要模擬的 object。 但是當調用到connector4AuroraDB
時,它不是被模擬而是返回null
。
這是它的使用方式:
Connection connection = connector4AuroraDB.openConnection();
它正在拋出NullPointerException
。 知道如何模擬這個嗎?
從您的評論中可以看出, Connector4AuroraDB
是由 Spring( @Autowired
)自動裝配的。 在我看來,您正在使用字段注入,這使得做存根依賴變得困難。
我假設你有類似的東西:
public class AuroraRepoImpl {
@Autowired private Connector4AuroraDB connector4AuroraDB;
}
為此,您需要 Spring 上下文設置,因此 spring 可以查看 bean 注冊表以查找依賴項。
您的示例是一個使用MockitoJUnitRunner
運行的簡單單元測試。 您應該更改您的實現以使用構造函數注入,這樣 Mockito 可以注入依賴項:
public class AuroraRepoImpl {
private final Connector4AuroraDB connector;
@Autowired
public AuroraRepoImpl(final Connector4AuroraDB connector) {
this.connector = connector;
}
}
如果您使用新的 Spring 版本,如果 class 只有一個構造函數,您甚至可以省略@Autowired
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.