2

我想测试这样的控制器操作:

createNewBase: function () {

  var attributesForNewBase = this.get( 'model' ).getProperties( ... ),
      self = this,
      newBase = this.store.createRecord( ..., {

        ...

      } );

  newBase.save().then( function ( createdBase ) {

    self.send( 'setBaseOfModel', createdBase );

  }, function ( error ) {

    console.log( error );

  } );

}

问题是,如果我使用 ember-qunit 的 moduleFor 来测试此操作,则商店未定义。那么我该怎么做或创建此类测试的正确方法是什么?

4

1 回答 1

3

您可以创建一个模拟商店。像这样的东西:

controller.set('store', {
    createRecord: function() {
        return {
            save: function() {
                return Ember.RSVP.resolve();
            }
        };
    }
});

这将使您的控制器能够像商店真的在那里一样运行,同时提醒您控制器是否对商店进行了您没有提前计划的任何事情。

另一种方法是实际设置您的商店进行测试,但这稍微复杂一些。如果您想这样做,编写集成测试而不是单元测试可能更容易。

于 2014-08-28T11:57:19.743 回答