【问题标题】:How to stub computed properties during unit testing?如何在单元测试期间存根计算属性?
【发布时间】:2013-12-16 17:00:22
【问题描述】:

假设我们有一个对象

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 计算属性的正确方法是什么?

【问题讨论】:

  • 我认为您在使用var myObject = Ember.Object.create(... is not possible to create an object with computed properties时收到错误。
  • @MárcioRodriguesCorreaJúnior 不,我们没有收到错误消息,您使用的是哪个版本的 ember?不过现在我使用的是 0.9.8
  • 最新的 1.2.0,我用 1.0.pre 测试过,没有报错,所以忘记我的最后评论:)

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


【解决方案1】:

我想出了一种方法来做到这一点(虽然不完全是存根),只是想知道每个人对此的看法

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

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

【讨论】:

  • 您的意思是object.reopen({ enabled: true });?我不知道object.reopen("enable", true); 是否有效...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2011-07-27
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多