2017-10-30 135 views
1

私は春(Javaの1.8)でmockitoを使用していますし、私は私の答えオブジェクト内のローカル変数を使用しようとしています:Mockitoローカル変数

public IProductDTO productForMock = null; 


@Bean 
@Primary 
public ICouchbaseDTOProvider mockCreateProductDelegate() { 

    CouchbaseDTOProvider mockService = mock(CouchbaseDTOProvider.class); 

    Mockito.when(mockService.get(anyString(), ProductDTO.class)).thenReturn((IBaseCouchbaseDTO) productForMock); 

    Mockito.when(mockService.getEnvironment()).thenReturn(null); 

    Mockito.when(mockService.insert((IBaseCouchbaseDTO) anyObject())).thenAnswer(
      new Answer<IProductDTO>() { 
       @Override 
       public IProductDTO answer(InvocationOnMock invocation) throws Throwable { 
        productForMock = invocation.getArgumentAt(0, IProductDTO.class); 
        return null; 
       } 
      } 

    ); 

    return mockService; 
} 

しかし、私はこのエラーを取得しています:

This exception may occur if matchers are combined with raw values: 
    //incorrect: 
    someMethod(anyObject(), "raw String"); 
When using matchers, all arguments have to be provided by matchers. 
For example: 
    //correct: 
    someMethod(anyObject(), eq("String by matcher")); 
+1

約3つのステップをバックアップします。なぜあなたは擬似としてBeanを作成していますか? – Makoto

答えて

1

エラーは、Answerとは関係ありません。

Mockito.when(mockService.get(anyString(), ProductDTO.class)) 
     .thenReturn((IBaseCouchbaseDTO) productForMock); 

エラーが「この例外は生の値と結合されている場合に発生する可能性があります」と説明されています。これを解決するには、ProductDTO.classの値の代わりにMatcherを使用する必要があります。

Mockito.when(mockService.get(anyString(), eq(ProductDTO.class))) 
     // Here --------------------------^ 
     .thenReturn((IBaseCouchbaseDTO) productForMock); 
0

エラーThis exception may occur if matchers are combined with raw values:手段:あなたが期待含む生の値持つことができます

eqは法案収まる必要

Mockito.when(mockMixer.mix("red","white")).thenReturn("pink"); 

を...または、あなたはマッチャーを含む期待を持つことができます。

Mockito.when(mockMixer.mix(startsWith("re"), endsWith("ite")).thenReturn("pink")); 

...ただし、両方の混合物を持っている:

// Compiles, but will cause runtime exception 
Mockito.when(mockMixer.mix(startsWith("re"), "white").thenReturn("pink")); 

修正がeq("white")で生の値を交換することである - 今、あなたは"white"に等しいパラメータを探しマッチャーを渡しています。

+0

ありがとうございました!出来た! : –

+0

良い答えをupvoteして受け入れることを忘れないでください。 – slim