2017-01-30 60 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函數中定義它們。如果你不是他們共享同一個對象。

相關問題