是否可以直接为 Grails 单元测试类的特定方法设置 System.property?
如果在 Config.groovy 中设置了系统属性,我有一个 Filters 类会阻止一些操作:
class MyFilters {
def filters =
{
if ('true'.equals(System.properties.getProperty('myProperty', 'false'))){
writeFilter(controller: "myController", action: "update")
{
before =
{
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return false;
在 MyControllerTests 中,我正在尝试对过滤器进行测试:
void testMyFilter(){
System.properties.setProperty('myProperty', 'true')
withFilters(action:"update") {
controller.update()
}
assert response.status == HttpServletResponse.SC_FORBIDDEN
}
但是过滤器类在这个阶段已经被模拟了(使用来自 Config 的默认 'false' 属性值),所以测试中属性的更改没有效果。
有没有办法解决这个问题,或者在 prop 更改后强制 Grails 重新加载 Filters 类?我无法更改 Config 中的默认属性,因为其他控制器测试将中断,它仅适用于将设置此道具的特定环境,因此我希望检查过滤器的测试所涵盖的场景将启动。
谢谢。