【问题标题】:How to set Ember environment variable of in qunit如何在 qunit 中设置 Ember 环境变量
【发布时间】:2013-08-26 03:42:31
【问题描述】:

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

我设置环境变量的方式是在我的application.html.erb布局的tag里面(顺便说一下我用的是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!");
  });
});

【问题讨论】:

    标签: ember.js qunit


    【解决方案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) {
       ...
    }
    

    【讨论】:

    • 这不仅是正确答案,而且是非常快速的答案!谢谢!我正在阅读其他一些帖子,这让我觉得必须在加载 ember 之前设置 ENV,这就是我将它们放在 标记中的原因。但显然,它可以在 Ember 声明之后设置,这更有意义。
    • 不客气。我在 jsfiddle 中遇到一些问题时发现了这一点,因为代码是在 emberjs 导入后加载的。所以在那种情况下,只有 ENV 对我没有用。
    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 2014-09-29
    • 2016-06-27
    • 2012-08-03
    • 2017-07-31
    • 2015-08-01
    • 2011-08-23
    相关资源
    最近更新 更多