簡體   English   中英

嘲笑 object 返回 null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM