如何在Spring中使用Mockito模拟自动装配的@Value字段?

我正在使用Spring 3.1.4.RELEASE和Mockito 1.9.5。在我的Spring班上,我有:

@Value("#{myProps['default.url']}")

private String defaultUrl;

@Value("#{myProps['default.password']}")

private String defaultrPassword;

// ...

从我目前设置的JUnit测试中可以看到:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration({ "classpath:test-context.xml" })

public class MyTest

{

我想为“ defaultUrl”字段模拟一个值。请注意,我不想模拟其他字段的值-我想保留它们的值,只保留“ defaultUrl”字段。另外请注意,setDefaultUrl我的班级中没有明确的“ setter”方法(例如),并且我不想仅为测试目的而创建任何方法。

鉴于此,我该如何模拟该字段的值?

回答:

这是我第三次在该SO职位上进行谷歌搜索,因为我总是忘记如何模拟@Value字段。尽管接受的答案是正确的,但我总是需要一些时间才能正确完成“ setField”调用,因此至少对我而言,我在此处粘贴了一个示例代码段:

生产类别:

@Value("#{myProps[‘some.default.url']}")

private String defaultUrl;

测试类别:

import org.springframework.test.util.ReflectionTestUtils;

ReflectionTestUtils.setField(instanceUnderTest, "defaultUrl", "http://foo");

// Note: Don't use MyClassUnderTest.class, use the instance you are testing itself

// Note: Don't use the referenced string "#{myProps[‘some.default.url']}",

// but simply the FIELDs name ("defaultUrl")

以上是 如何在Spring中使用Mockito模拟自动装配的@Value字段? 的全部内容, 来源链接: utcz.com/qa/425560.html

回到顶部