2016-10-19 5 views
0

私は私がサービス内のモックメッセージが届かないnullMockitoを使って別のMockクラスの中でSpring Message Resourceを模擬する方法は?私のテストで

を取得していますデ例外メッセージを主張.... :(

私が持っている:

私のテスト:

@RunWith(MockitoJUnitRunner.class) 
public class ServiceImplTest { 

    @InjectMocks 
    private ServiceImpl service; 

    @Mock 
    private Message message; 

    public static final String REQUIRED_FIELD = "required.field"; 

    @Before 
    public void setUp() { 
     when(message.getMessage(eq(REQUIRED_FIELD), any(List.class))).thenReturn(REQUIRED_FIELD); 

     System.out.println(message.getMessage(REQUIRED_FIELD, new ArrayList())); 
    } 

    @Test(expected = MyException.class) 
    public void testCancel_shouldValidCancellation_and_ThrowTicketException_with_RequiredFieldMessage() { 
     try { 
      Object object = //... new object 
      service.do(object); 
     } catch (Exception e) { 
      assertEquals(REQUIRED_FIELD, e.getMessage()); // <-- e.getMessage return null!!! 
     } 
    } 
} 

マイサービス:

@Service 
public class ServiceImpl implements Service { 

    @Autowired 
    Message message; 

    @Override 
    public Object do(Object object) { 
     if(object.getSomeAttribute() == null)) { 
      throw new MyException(message.getMessage("required.field", "attribute")); 
     } 

     //doSomething... 
     return something; 
    } 
} 

テストのでは、printLn()required.fieldを出力しますが、messageServiceです。

誰かが私を助けることができますか?

+0

'private serviceImpl service;'これはタイプミスか別のクラスですか? –

+0

申し訳ありませんが、ちょうど間違った書き込み..編集: – Lucas

答えて

1

Messageのインタフェースについての知識がなくても、確実に伝えるは難しいですが、あなたが署名getMessage(String, List)でスタブメソッドにモックオブジェクトを設定することを見つけるのは簡単です:

when(message.getMessage(eq(REQUIRED_FIELD), any(List.class))).thenReturn(REQUIRED_FIELD); 

しかし、ServiceImplgetMessage(String, String)を使用しています。この場合モックによって返されるデフォルト値はnullです。モックオブジェクトを適切に設定する必要があります。

+0

神!あなたはまったく正しい...私はそれを見ていない...ありがとう – Lucas

関連する問題