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

icnyk63a  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(180)

我正在为Ember.js设置ENV.HELPER_PARAM_LOOKUPS = true,这样linkTo帮助器将执行属性查找,而不是硬编码的路由。
我设置环境变量的方式在我的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!");
  });
});
7xllpg7q

7xllpg7q1#

我认为您的问题是因为您在导入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) {
   ...
}

相关问题