我用 Jmock 为 Spring 编写控制器测试。控制器使用接口进行数据库操作。这些是服务类。我可以对它们进行 jmock 并通过 setter 将它们传递给控制器进行测试。
真正的控制器有一个标有@Reource-annotation 的服务
@Resource 私有服务服务;
测试最终服务 service = context.mock(Service.class); 控制器.setService(服务);控制器.CallMethodToTest();
在控制器代码中,服务对象通常使用 Spring 的 @Resource 注释进行初始化。问题是当控制器在某些内部调用中使用相同的服务时,例如验证器或内部类。
真正的验证器也有一个标有@Reource-annotation 的服务
@Resource 私有服务服务;
在测试中,我可以例如引入验证器对象,在其上设置服务并将其传递给控制器。
MyValidator validator = new MyValidator();
validator.setService(service);
controller.setValidator(validator);
比方说验证器。验证调用 service.getSomething。我需要为 getSomething(); 写期望。在控制器中也可以调用相同的方法。
context.checking(new Expectations() {
{
allowing(service).getSomething();
will(returnValue(mockData));
}
});
尽管有允许基数,但这种情况会导致
allowed, already invoked 1 time
这是一种常见的情况,我无法提供更具体的代码。我想这与控制器和验证器服务方法调用有关。任何人都可以给我一个解决这个问题的提示吗?