【问题标题】:Unit testing service in EmberJS: How to prevent interaction between tests?EmberJS 中的单元测试服务:如何防止测试之间的交互?
【发布时间】:2017-01-30 12:33:20
【问题描述】:

在为 ember.js 中的服务编写单元测试时,我看到了一种奇怪的交互。它只发生在数组上。

我有一个具有数组作为属性的服务。数组的状态在不同的测试之间共享。如果属性具有简单类型(例如数字),我看不到这种行为。你有什么提示吗?

这是一个演示问题的 ember-twiddle:https://ember-twiddle.com/068e0c0fd7240e54c98972002fc2e34f?openFiles=tests.unit.services.my-service-test.js%2C

更新:我注意到如果我在init() 中初始化数组,它会正常工作,但如果我将其声明为服务对象的属性,则不会。数组和对象等复杂类型是否在不同实例之间共享状态?

所以这行不通:

import Ember from 'ember';
export default Ember.Service.extend({
  array: [],
});

这会按预期工作吗:

import Ember from 'ember';
export default Ember.Service.extend({
  array: undefined,
  init() {
    this.set('array', []);
  }
});

【问题讨论】:

    标签: unit-testing ember.js


    【解决方案1】:

    直接在任何 Ember.Object 上定义的数组和对象是共享的 跨该对象的所有实例。

    来自the guide的部分。

    您需要在 init 函数中定义它们。如果您不这样做,它们将共享同一个对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多