2012-01-05 6 views
3

実際、1を期待と言う、私はエラーを取得する:私はモック設定を削除した場合、デバッグモードでトレースするときEasyMockは、代わりに私のモックで0

redisDao.someMethod(notNull(), notNull()): expected 1, actual 0 

、そして、それはに行きますメソッドredisDao.someMethodを呼び出すと、nullポインタ例外が発生して失敗します。

これは私には意味がありませんが、これを修正する方法がわからないのですか?

mockMaker = EasyMock.createStrictControl(); 
redisDaoMock = mockMaker.createMock(redisDao.class); 

userService.setRedisDao(redisDaoMock); 

expect(redisDaoMock.someMethod(EasyMock.<String>notNull(), EasyMock.<String>notNull())).andReturn(someReturn); 

mockMaker.replay(); 
mockMaker.verify(); 

userController.get(request, response); 

// assertions here 
+3

私は完全にわからないが、あなたはリプレイを入れて確認するか、単にメソッド呼び出しの後に確認するべきではないのですか? –

+0

良いキャッチ、私はverify()メソッド呼び出しの後に行くと思います。あなたが期待したことが呼び出されたことを確認します。 – Logan

+0

@srikanthradixそれは感謝していた。 – Blankman

答えて

7

"厳密な"モックオブジェクトを作成していて、expect()に入れたメソッドを呼び出すと思っています。あなたのコードが予期したメソッド呼び出しを実行しない場合は、実際の0のメッセージが1つ期待されます。

createStrictControlではなくEasyMock.createNiceMock()を使用できます。これは遠ざかるはずです。または、あなたのコードがExpect呼び出しであなたが指示するメソッドを呼び出していることを確認してください。

expect呼び出しの最後に.anytimes()を追加する必要があるかもしれないので、呼び出されなくてもOKです。

This page has some good explanations and even has your error

+1

+1同じモックオブジェクトに属する異なるメソッド呼び出しで.anytimes()を追加すると、私のトリックになりました。 – user1563633

関連する問題