在JUnit / Mockito中,我们有两个非常有用的注解:@模拟和**@注射模拟**。在我的新项目中,我开始使用groovy和spock进行测试,我想知道是否有一个替代提到的注解?
nxowjjhe1#
在Spock中并不真实的需要@Mock,因为已经有= Mock(),它可以在任何可以使用注解的地方使用(其他地方也有)。@InjectMocks有一个开放的拉取请求,但还没有决定这样的特性是否会进入spock-core或spock-guice。(将此特性与spock-guice一起提供,或者至少在类路径上需要Guice,将允许将注入委托给Guice,而不是重新发明轮子。)否则,@InjectMocks总是可以作为第三方Spock扩展提供。
@Mock
= Mock()
@InjectMocks
643ylb082#
两个月前有人写了一段注解:https://github.com/msid256/MockInjector4Spock。您要测试的bean不需要手动示例化,您所需要做的就是将它声明为一个字段,并用@InjectMocks对其进行注解。
@Service class ServiceC { @Autowired public ServiceC(ServiceA a, ServiceB b) {} } class DemoSpec extends Specification { @Autowired ServiceA serviceA; ServiceB serviceB = Mock(ServiceB.class) @InjectMocks // from MockInjector4Spock - de.github.spock.ext.annotation.InjectMocks ServiceC serviceC; }
9jyewag03#
https://github.com/marcingrzejszczak/spock-subjects-collaborators-extension您可以使用@Collaborator和@Subject,而不是@Mock和@InjectMocks
@Collaborator
@Subject
3条答案
按热度按时间nxowjjhe1#
在Spock中并不真实的需要
@Mock
,因为已经有= Mock()
,它可以在任何可以使用注解的地方使用(其他地方也有)。@InjectMocks
有一个开放的拉取请求,但还没有决定这样的特性是否会进入spock-core或spock-guice。(将此特性与spock-guice一起提供,或者至少在类路径上需要Guice,将允许将注入委托给Guice,而不是重新发明轮子。)否则,@InjectMocks
总是可以作为第三方Spock扩展提供。643ylb082#
两个月前有人写了一段注解:https://github.com/msid256/MockInjector4Spock。
您要测试的bean不需要手动示例化,您所需要做的就是将它声明为一个字段,并用@InjectMocks对其进行注解。
9jyewag03#
https://github.com/marcingrzejszczak/spock-subjects-collaborators-extension
您可以使用
@Collaborator
和@Subject
,而不是@Mock
和@InjectMocks