2012-07-16 29 views
0

我正在測試一個讓我說MyClass和JUnit的類。我正在使用easymock來隔離對數據庫的需求。它工作正常。所以如果有一個模型對象的調用,我只是嘲笑那個對象。 例如如果我有EasyMock當我們在測試類上調用db時

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

裏面的MyClass我只是使用mockedProject。然後我說MyClass.method(mockedProject); 但是如果我在MyClass中有this.getName()會怎麼樣。在那種情況下,因爲我想爲我正在測試的類(MyClass)的真實對象,我不能嘲笑MyClass對象。所以我不能爲MyClass對象定義一個返回值,因爲它是一個真實的對象。請記住,getName()會拋出我不希望它去的分貝。

當我擁有this.method()以及該方法與db一起使用時,我應該如何處理這種情況。 我不能嘲笑我正在測試的這個對象。 謝謝。

+0

你能告訴我們訪問數據庫的方法嗎? – 2012-07-16 06:26:59

回答

1

如果你能嘲笑你用來訪問類所需的行爲數據庫然後做到這一點,然後this.getName()將使用模擬類,並會得到您定義的任何數據。

如果數據庫訪問類不能被嘲笑,那麼你什麼都不能做。

UPDATE:

測試JPA實體可能會有點麻煩,如果你可以模擬實際的實體,然後通過各種手段,去爲它,並將它返回任何你喜歡的,而不是DB結果。但我不確定這是可能的。

我建議你看一下herehere瞭解更詳細的例子。

+0

我正在使用JPA,我有實體類。通過嘲笑類你的意思是嘲笑實體類有getter和setter db列?此外,這是不打算顯式訪問數據庫,而是調用實體類的類。但是,在這個getName()方法中,我寫了一個查詢分貝。而「This」是我想測試它的功能的類,所以我還應該嘲笑它? – Sara 2012-07-16 15:07:43

+0

您使用的是JPA? – Tomer 2012-07-16 15:20:49

+0

Hmmss你是什麼意思?我只有ORM的實體類+ xml文件。我沒有使用實體管理器。 – Sara 2012-07-16 15:22:22

0

你應該嘲笑其內MyClass.getName()(例如EntityManager的)訪問數據庫的類並記錄這些嘲笑也

相關問題