如何在qunit中设置Ember环境变量

时间:2013-08-26 03:42:31

标签: ember.js qunit

我正在为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!");
  });
});

1 个答案:

答案 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) {
   ...
}