NutzCN Logo
问答 nutz 单元测试,ServletContext注入失败
发布于 180天前 作者 qq_e25320ed 155 次浏览 复制 上一个帖子 下一个帖子
标签:

使用nutz做单元测试
utils : {
type : 'com.ifs.infra.tools.FileUtils',
fields : {
sc : {app:'$servlet'} // 将 ServletContext 对象注入 MyUtils
}
},
启动报错:
Caused by: org.nutz.ioc.IocException: create ioc bean fail name=utils ioc define:
{
"type" :"com.ifs.infra.tools.FileUtils",
"singleton" :true,
"args" :[],
"fields" :[{
"name" :"sc",
"value" :{
"type" :"normal",
"value" :{
"app" :{
"type" :"normal",
"value" :"$servlet"
}
}
},
"optional" :false
}],
"scope" :"app"
}
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:132)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:194)
at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:31)
at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:56)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:123)
... 67 more

5 回复

单元测试环境下,哪来的servletContext?

配个mock倒是可以

我写了一个MyNutzTestRunner,继承NutTestRunner,创建完ioc,把servletContext mock出来。但是为什么怎么没有注入到bean中。
@Override
protected Ioc createIoc() {
Ioc ioc = super.createIoc();
MockServletContext servletContext = new MockServletContext();
Mvcs.setServletContext(servletContext);
Mvcs.setIoc(ioc);
return ioc;
}

加一句

((Ioc2) ioc).addValueProxyMaker(new ServletValueProxyMaker(servletContext()));

试了一下,哈哈,可以了,谢谢兽兽!

添加回复
请先登陆
回到顶部