【问题标题】:Best practice for avoiding namespace collision and initialization functions testing Ember.js避免命名空间冲突和初始化函数测试 Ember.js 的最佳实践
【发布时间】:2012-04-18 09:08:59
【问题描述】:

为了避免基于 ember 的应用程序的开发/生产环境和测试环境之间的名称冲突,最好的做法是什么。

通常,每个 Ember 应用程序都有一个命名空间:

window.MyApp = Em.Application.create();

在生产中,我通过重新定义 Em.Application 的 ready 属性来运行一些初始化函数

window.MyApp = Em.Application.create(

    ready: function() {
      // create some objects
    }
);

但是,在我的测试环境中,我不想运行这些初始化函数,因为我自己创建了对象。使用 MyApp 的相同定义会导致冲突,因为我创建的对象在 DOM 中插入了相同的元素。那么,当我测试我的应用程序时,如何在没有 ready 函数的情况下使用相同的命名空间 MyApp 呢?我使用 jasmine 来测试应用程序。

【问题讨论】:

  • @MikeAski 你是什么意思?当我觉得答案很有趣时,我总是投票给它!
  • @MikeAski 抱歉,我对 stackoverflow 比较陌生。下次我会努力做到最好的。

标签: ember.js jasmine


【解决方案1】:

我将用于实例化我的控制器、创建和设置视图的胶水代码保留在 Application#ready 函数之外。

以pangratz/ember.js-dashboard 为例:core.js 只包含Namespace 定义,而controllers.js、views.js 等定义我的类。实例化控制器、创建视图和设置绑定的胶水代码在main.js 中定义。然后在index.html 的“真实”应用程序中使用main.js。

我将interline/ember-skeleton 用于基本应用程序布局,它本身使用QUnit 进行测试。但这也应该适用于 Jasmine。

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2013-03-17
    • 2012-04-15
    相关资源
    最近更新 更多