【发布时间】:2016-07-05 05:14:19
【问题描述】:
我有一个带有这个构造函数的 Spring MVC @Controller:
@Autowired
public AbcController(XyzService xyzService, @Value("${my.property}") String myProperty) {/*...*/}
我想为此控制器编写一个独立的单元测试:
@RunWith(MockitoJUnitRunner.class)
public class AbcControllerTest {
@Mock
private XyzService mockXyzService;
private String myProperty = "my property value";
@InjectMocks
private AbcController controllerUnderTest;
/* tests */
}
有没有办法让@InjectMocks 注入我的字符串属性?我知道我不能模拟一个字符串,因为它是不可变的,但是我可以在这里注入一个普通的字符串吗?
@InjectMocks 在这种情况下默认注入一个空值。如果我把它放在myProperty 上,@Mock 会抛出异常,这是可以理解的。是否有另一个我错过的注释只是意味着“注入这个确切的对象而不是它的模拟”?
【问题讨论】:
-
我知道我可以在设置方法中手动实例化我的控制器,但我希望找到注释配置样式的解决方案。谢谢!
标签: java spring unit-testing dependency-injection mockito