如何在单元测试期间存根计算属性?

时间:2013-12-16 17:00:22

标签: ember.js mocha karma-runner sinon chai

说我们有一个对象

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需要一个方法作为第二个参数

那么,问题是在ember 0.9.8中stub计算属性的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

我想出了一种方法来做到这一点(尽管不是完全顽固),只是想知道每个人对此的看法

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

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