gpt4 book ai didi

ember.js - 用 quint 测试 ember fixture 数据

转载 作者:行者123 更新时间:2023-12-02 01:58:02 24 4
gpt4 key购买 nike

我们如何使用 quint 测试用 fixture 测试 ember 数据?这是我的测试代码的样子:

/*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 。但是如何测试返回了多少条记录或检查数据呢?

谢谢,迪伊

最佳答案

store.find 执行异步加载,甚至 fixture 中的数据都在内存中。该方法用于模拟 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');
});
});
});

关于ember.js - 用 quint 测试 ember fixture 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com