我使用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