2017-01-30 83 views
0

在编写ember.js中的服务的单元测试时,我看到了一个奇怪的交互。它只发生在数组上。EmberJS中的单元测试服务:如何防止测试之间的交互?

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

这里是一个余烬,玩弄演示该问题: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', []); 
    } 
}); 

回答

0

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

the guide开始的部分。

您需要在您的init函数中定义它们。如果你不是他们共享同一个对象。