我正在为Ember.js设置ENV.HELPER_PARAM_LOOKUPS = true
,因此linkTo助手将执行属性查找而不是硬编码路由。
例如,我可以{{linkTo view.path}}
我设置环境变量的方式是在我的application.html.erb布局的标记内(顺便说一下我使用的是rails 4.0),如下所示:
<script type="text/javascript" >
// Ember environment variable
ENV = {
HELPER_PARAM_LOOKUPS: true
};
</script>
然而,当我运行qunit测试时,它会给出错误:
尝试linkTo路由'view.path.index'失败。路由器在其可能的路由中找不到“view.path.index”:
它还提供了弃用警告:
弃用:您向linkTo帮助程序提供了view.path的无引号目标路由参数。很快,这将执行属性查找,而不是被视为字符串。要删除此警告,请在引号中包含view.path。要选择加入此新行为,请设置ENV.HELPER_PARAM_LOOKUPS = true
显然,qunit没有按照我的意图配置Ember.js。如何在加载测试时让qunit读取我的ember环境设置。
以下是我的qunit测试中的代码:
module("Frontend Test", {
setup: function() {
Ember.run(App, App.advanceReadiness);
},
teardown: function() {
App.reset();
}
});
test("Check HTML is returned", function() {
visit("/").then(function() {
ok(exists("*"), "Found HTML!");
});
});
答案 0 :(得分:1)
我认为您的问题是因为您在导入emberjs脚本后声明ENV
。
如果您之前声明,请使用:
ENV = {
HELPER_PARAM_LOOKUPS: true
};
可以工作,但是在ember脚本之后,你需要在ember命名空间中声明:
Ember.ENV = {
HELPER_PARAM_LOOKUPS: true
};
这是因为,在初始化中它确实:
Ember.ENV = 'undefined' === typeof ENV ? {} : ENV;
并且在linkTo
帮助器中,始终使用Ember.ENV
:
if (Ember.ENV.HELPER_PARAM_LOOKUPS) {
...
}