2014-08-28 65 views
2

我想测试这样的控制器操作:EmberJS:如何测试与Ember-qunit的moduleFor,控制器动作,它使用烬数据的储存

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); 

    }); 

} 

的问题是,如果我使用moduleFor用于测试此操作的ember-qunit,该商店未定义。那么,我需要做什么或者创建这样的测试的正确方法是什么?

回答

3

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

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

这将使你的控制器充当商店是否是真的存在,而在同一时间,提醒您如果控制器没有做任何事情与你没有提前规划商店的时间。

另一种方法是实际设置您的商店进行测试,但这涉及更多一点。如果你想这样做,那么编写集成测试代替单元测试可能会更容易。