0

JUnitでMyClassと言うクラスをテストしています。データベースの必要性を分離するために easymock を使用しています。それは正常に動作します。したがって、モデル オブジェクトへの呼び出しがある場合は、そのオブジェクトをモックするだけです。たとえば、私が持っている場合

public void method(Project project) { project.getName(); ..}

MyClass 内では、mockedProject を使用するだけです。次に、 MyClass.method(mockedProject); と言います。しかし、MyClass 内に this.getName() がある場合はどうでしょうか。その場合、テストしているクラス (MyClass) の実際のオブジェクトが必要なので、MyClass オブジェクトをモックすることはできません。したがって、 MyClass オブジェクトは実際のオブジェクトであるため、戻り値を定義できません。getName() は、行きたくないデータベースをスローすることに注意してください。

this.method() があり、メソッドが db で動作する場合、この場合はどうすればよいですか。私がテストしているこのオブジェクトをモックすることはできません。ありがとう。

4

2 に答える 2

1

DBへのアクセスに使用するクラスをモックできる場合は、それを実行すると、モックされたクラスが使用され、this.getName()定義したデータが取得されます。

DBアクセスクラスをモックできない場合、実際には何もできません。

アップデート:

JPAエンティティのテストは少し難しいかもしれません。実際のエンティティをモックできる場合は、ぜひそれを試して、DBの結果の代わりに好きなものを返すようにしてください。しかし、それが可能かどうかはわかりません。

より詳細な例については、ここここをご覧になることをお勧めします。

于 2012-07-16T09:20:36.647 に答える
0

MyClass.getName() 内の DB にアクセスするクラス (EntityManager など) をモックし、これらのモックの望ましい動作も記録する必要があります。

于 2012-07-16T06:45:50.733 に答える