【问题标题】:EmberJS: How to test a controller action with moduleFor of ember-qunit, which uses store of ember-dataEmberJS:如何使用 ember-qunit 的 moduleFor 测试控制器操作,它使用 ember-data 的存储
【发布时间】:2014-10-22 06:01:23
【问题描述】:

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

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 来测试这个动作,商店是未定义的。那么我该怎么做或创建此类测试的正确方法是什么?

【问题讨论】:

    标签: ember.js ember-data ember-qunit


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      相关资源
      最近更新 更多