2

我正在ENV.HELPER_PARAM_LOOKUPS = true为 Ember.js 设置,因此 linkTo 助手将执行属性查找而不是硬编码路由。例如,我可以做{{linkTo view.path}}

我设置环境变量的方式是在我的 application.html.erb 布局的标签内(顺便说一下,我使用的是 rails 4.0),如下:

  <script type="text/javascript" >
  // Ember environment variable
      ENV = {
      HELPER_PARAM_LOOKUPS: true
      };
  </script>

但是,当我运行 qunit 测试时,它给出的错误如下:

尝试链接到路由“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!");
  });
});
4

1 回答 1

1

我认为您的问题是因为您ENV在导入 emberjs 脚本后声明。

如果您之前声明,请使用:

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) {
   ...
}
于 2013-08-26T04:12:07.897 回答