0

そのため、単体テスト中にデータ層オブジェクトをモックするために easymock を使用しました。永続性のためにJPAを使用しています。例 Project project = EasyMock.cre..(Project.class); 等

テストしたいメソッドは、このプロジェクトを取得していくつかのことを行い、persist(project) を呼び出して永続化します。プロジェクトはモックされたオブジェクトなので、ここでエラーが発生します。メソッドの機能をテストしたいだけなので、マネージャーが私に言っています。db からの戻り値は imp ではないため、実際の db の代わりにモックを使用する必要があります。では、メソッド呼び出しを永続化するこのメソッドの場合、どうすればよいでしょうか?

ありがとう。

4

1 に答える 1

4

エンティティではなく、エンティティ マネージャーをモックする必要があります。

エンティティは、簡単に作成できる pojo にすぎません。エンティティ マネージャーで永続化が呼び出されているかどうかを確認する必要があります。

Edit

静的メソッドを使用して、クラスの下のテストでエンティティ マネージャーのインスタンスを作成しているようです。それを嘲笑する簡単な方法はありません。

依存性注入を使用して、それを使用するオブジェクトにエンティティ マネージャを渡す必要があります。次に、実際の実装を渡す代わりに、モック インスタンスを渡すことができます。

したがって、コードは次のようになります。

Project project = ...    

EntityManager manager = EasyMock.createStrictMock(EntityManager.class); 
ClassUnderTest test = new ClassUnderTest(manager)

//You expect this to be called    
manager.persist(project);

EasyMock.replay(manager);

//The method you are testing
test.save(project);

EasyMock.verify(manager);

(私はしばらく easymock を使用していないので、メソッドが正しくない可能性があります。)

于 2012-07-16T21:35:58.233 に答える