我们如何使用quint测试用灯具测试余烬数据? 以下是我的测试代码的样子:
/*globals App, getFoodController*/
module('Analytics Unit Test: AnalyticsConfig Controller', {
setup: function () {
AS.Store = DS.Store.extend({
adapter: DS.FixtureAdapter.create({ simulateRemoteResponse: false })
});
AS.AnalyticsRun.FIXTURES = [{
id: 1,
analyticsPlan: "Jane Q. Public",
commandScript: "some script",
analyticsRunParameters: []
}];
}
});
test('Check controller is initialized',function(){
var controller = getAnalyticsConfigController();
ok(controller, 'AnalyticsConfig controller is ok');
});
test('Check data',function(){
var controller = getAnalyticsConfigController();
var store = controller.get('store');
var data;
Ember.run(function () {
data = store.find('analyticsRun',1);
console.log(data);
});
equal(data.length, 1, 'Check data');
});
当我记录数据时,它返回一个promise。但是,如何测试返回的记录数或检查数据?
谢谢, DEE
答案 0 :(得分:2)
store.find
执行异步加载,甚至夹具中的数据也在内存中。该aproach用于模拟ajax请求。因此,您需要使用then
方法来了解数据的加载时间。
要测试qunit中的异步行为,您需要使用asyncTest。
更新样本,提供以下代码:
asyncTest('Check data', 1, function() {
var controller = getAnalyticsConfigController();
var store = controller.get('store');
Ember.run(function () {
store.find('analyticsRun',1).then(function(data) {
equal(data.get('length'), 1, 'Analytcs with id 1 found');
start();
});
});
});
我希望它有所帮助
<强>更新强>
现在我已经意识到你使用simulateRemoteResponse: false
所以不需要使用asyncTest。但是仍然需要then
方法,因为您可以在其中检索所获取的模型:
test('Check data', function() {
var controller = AS.__container__.lookup('controller:analyticsConfig');
var store = controller.get('store');
Ember.run(function () {
store.find('analyticsRun',1).then(function(analyticsRun) {
equal(analyticsRun.get('analyticsPlan'), 'Test', 'Analytics with id 1 found');
});
});
});
答案 1 :(得分:0)
尝试
data = store.find('analyticsRun',1);
data.on('didLoad', function() {
console.log(data.get('length')); //should output number of recs returned
});