2012-04-25 3 views
2

私はJunitと一緒にSpring Testフレームワークを使用しています。内Mockito NotMockExceptionが明白なとき

<bean id="mailService" name="mailService" class="org.mockito.Mockito" factory-method="mock"> 
    <constructor-arg value="com.acme.utils.email.AWSMailService" /> 
</bean> 

:私はタイプAWSMailServiceのBeanを作成していrestTestContext.xml以内

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({ "classpath:spring/restTestContext.xml", 
     "classpath:spring/webserviceContext.xml" }) 
@PrepareForTest(User.class) 
public class RestTestsIT { 

// This is a mock 
@Autowired private AWSMailService mailService; 
... 
} 

(実際にはモックです):私は私がテストケースに使用するSpringコンテキストファイルを持っていますテスト私はのsendEmail()メソッドはmailserviceとのモックで呼び出されたことを確認しようとしていますが、オブジェクト上でtoString()を呼び出すことが、私はNotAMockExceptionを取得しています私に語ったことはモックです:

public void testEmailSent() { 
... 
// Results in "Mock for AWSMailService, hashCode: 31777764" 
System.out.println(mailService.toString()); 

// Results in NotAMockException 
verify(mailService).sendEmail(any(String.class), ...); 
} 

これを引き起こしている可能性のあるアイデアは誰にもありますか? Mockitoは、youreの発信者とあなたのモックオブジェクト間の中間としてプロキシ$ 34クラスを取得しているので、それは、モックではないだと思っよう

おかげ

+0

固定:明らかに私は自分の質問に答えることができるように8時間待たなければならないので、明日更新します:( –

答えて

1

は、このオブジェクトのプロキシを作成する春ですか?それが修正されました:)

問題

+0

はい、私は手動でモックアップ –

0

はMockitoが実際にモックを作成していたが、春には、それをプロキシたとMockitoモック周りのプロキシがあることをうまくするのに十分なインテリジェントではないということでした。

私は今、手動でユニットテストでモックを作成し、それらを配線しています:

@Mock private AWSMailService mailService; 
@Autowired private UserService userService; 

@Before 
public void setup() { 
    ((UserServiceImpl) userService).setMailService(mailService); 
} 
1

私は同じ問題を抱えていた、私は問題があり、バージョン1.9.0で、mockito 1.8.1を使用していました修正されました。

Mockitoの有効なモックアルゴリズムが変更され、春のプロキシードBeanと競合していません。

関連する問題