如何使用 @WithMockUser 并从我的属性文件中传递我的用户名和密码?
Posted
技术标签:
【中文标题】如何使用 @WithMockUser 并从我的属性文件中传递我的用户名和密码?【英文标题】:How can I use @WithMockUser and pass my username and password from my properties file? 【发布时间】:2019-08-31 01:36:21 【问题描述】:我正在编写一个集成测试,其中应用程序具有使用 spring 安全性应用的基本身份验证。我正在使用 @WithMockUser 告诉 mockMVC 如何使用我的端点进行身份验证。
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@WithMockUser(username="username", password="password")
这可行,但我想知道是否可以将这些字符串替换为对我的 application.properties
文件中的值的引用,类似于您可以这样做:
@Value("$spring.security.user.name")
private String userName;
以上可以吗?
【问题讨论】:
【参考方案1】:您只能将常量表达式传递给注解,但另一种方法是创建您自己的安全上下文,如@WithSecurityContext 章节中所述: https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/test-method.html
我还将创建自己的测试属性配置文件,用于从测试中读取属性。
【讨论】:
【参考方案2】:我最终删除了@WithMockUser
注释,并采用了这个更适合我的用例的解决方案。此方法使用配置的基本身份验证进行身份验证,因此如果要更改它不会有问题。
@RunWith(SpringRunner.class)
@SpringBootTest
public class sampleTestIT
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception
mockMvc = webAppContextSetup(webApplicationContext).build();
....
【讨论】:
以上是关于如何使用 @WithMockUser 并从我的属性文件中传递我的用户名和密码?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?
@WithMockUser 在集成测试中不起作用 - Spring boot