2013-12-16 27 views
1

說,我們有一個對象如何在單元測試期間存根計算屬性?

var myObject = Ember.Object.create({ 
    enable: function(){ 
    //a method which has a lot of calculations and returns a boolean 
    }.property("someDependency"), 
    disable: Ember.computed.not("enable") 
}) 

我測試的財產enable分開,現在我要測試的屬性disable分別&我只想存根enable讓我的測試用例是簡單的。

我試圖

myObject.set("enable", true) 

,但這是不正確的,因爲我們需要定義一個setter(這是不是所有的計算性能的情況下)

sinon.stub(myObject, "enable") 

也失敗了,因爲Ember.computed返回object但是sinon需要一個方法作爲第二個參數

所以,問題是什麼纔是stub co的正確方法在燼0.9.8的財富屬性?

+0

我認爲你收到一個錯誤使用時'VAR myObject的= Ember.Object .create(...'不可能創建一個具有計算屬性的對象。 –

+0

@MárcioRodriguesCorreaJúnior不,我們沒有得到一個錯誤,你使用哪個版本的燼?現在我使用0.9.8雖然 –

+0

最近1.2.0,我用1.0.pre進行了測試,並沒有拋出任何錯誤,所以忘記了我的最後一條評論:) –

回答

2

我想通了,做一個這樣的方式(不完全雖然磕碰),只是想知道每個人都認爲這個

beforeEach(function(){ 
    object.reopen({enable: true}); 
}) 

it('should be false when enable is true', function(){ 
    expect(object.get("disable")).to.be.false; 
}) 
+0

您的意思是'object.reopen({enabled:true});'?我不知道是否'object.reopen(「enable」,true);'作品... –

+0

是啊謝謝指出,我編輯了答案 –