1
私のクラスは私が嘲笑しようとしています。フィールドとしてのプリミティブを持つクラスの@InjectMocks
private MemcachedClient memcachedClient;
private CachedObjectFactory cachedObjectFactory;
private int cacheTimeToLive;
private boolean hasCert;
@Autowired
public MyClass(CachedObjectFactory cachedObjectFactory,
MemcachedClient memcachedClient,
@Value("${cache.ttl.in.second}") int cacheTimeToLive,
@Value("${hasCert}") boolean hasCert) {
this.cachedObjectFactory = cachedObjectFactory;
this.memcachedClient = memcachedClient;
this.cacheTimeToLive = cacheTimeToLive;
this.hasCert = hasCert;
}
私は@InjectMocks
を使用する場合(1がないため)、それはデフォルトコンストラクタで初期化する方法を見つけ出すことができないと文句を言い。私はmockitoがこれを作成するのに使うことができると思うが、プリミティブ(boolean/cacheTimeToLive)をどのように注入するのか分からない。私のテストでこれを行う方法はありますか?
テストで@Beforeメソッドのクラスを初期化するのはどうですか? 'myClass = new MyClass(mockedCachedObjectFactory、mockedMemcachedClient、intValue、boolValue)'? –
あなたはそのクラスを模擬しようとしていません、あなたは自分のフィールドにモックを注入しようとしていますか? –
+1 to dur; InjectMocksはあなたに 'ヌル'や[他のタイプの注射に落ちるように]注入するので、あなたを偽の安心感に魅了することができます(http://site.mockito.org/mockito/docs/current/org/mockito/InjectMocks .html)は黙っています。テストからコンストラクタを明示的に呼び出す方がはるかに安全ですっきりしています。 –