我使用Jmock編寫Spring的控制器測試。控制器使用接口進行數據庫操作。這些是服務類。我可以通過setter將它們jmock並傳遞給控制器。Jmock,測試中的Spring和Anotated資源
實際控制人有標有@ Reource-anotation
@Resource 私人服務業務的業務;
測試 最終服務服務= context.mock(Service.class); controller.setService(service); controller.CallMethodToTest();
在控制器代碼服務對象通常是用Spring的@Resource anotation.The問題intialized是當控制器在一些內部呼叫使用相同的服務,例如驗證或內部類。
真實的驗證還標有@ Reource-anotation
@Resource 私人服務業務的業務;
在測試I可以e.g介紹它的驗證對象,設置服務並將它傳遞給控制器。
MyValidator validator = new MyValidator();
validator.setService(service);
controller.setValidator(validator);
假設驗證器。驗證調用service.getSomething。我需要爲getSomething()編寫Expectations;在控制器中也可以調用相同的方法。
context.checking(new Expectations() {
{
allowing(service).getSomething();
will(returnValue(mockData));
}
});
儘管允許基數的,這樣的情況會導致
allowed, already invoked 1 time
這是一個常見的場景,我無法提供更具體的代碼。我想這與控制器和驗證器服務方法調用有關。任何人都可以給我一個修改這個提示嗎?
對不起,但你的問題很難理解,說實話我不明白你的問題或情況。 – Ralph
如何使用相同的mockobject控制器和控制器屬性? – mjgirl
我仍然認爲你沒有貶低你的問題:「問題是控制器在內部調用中使用相同的服務,例如驗證器或內部類。」 - 有一些東西缺失。 - 無論如何,我希望我理解你的權利,你想創造兩個同班同學。我已發佈了有關此主題的答案。 – Ralph