gpt4 book ai didi

javascript - 单元测试以确保函数调用 api 并将数据分配给变量

转载 作者:行者123 更新时间:2023-11-30 16:09:56 25 4
gpt4 key购买 nike

我正在从事写作和 JS 单元测试。这是我仍在努力解决的问题,并且正在学习如何正确地做。我有一个调用 api 的函数,然后将 promise 中的数据分配给一个变量。下面是代码:

API

this.get_history = function(item_id) {
var deferred = $q.defer();
$http.get('/api/items/' + item_id + '/bids', {
ignoreLoadingBar: true
})
.success(function(data, status, headers, config) {
deferred.resolve(data);
})
.error(function(data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
};

调用API的函数

item.refresh_bid_history = function() {
var self = this;
my_api.get_history(self.id).then(function(data){self.bid_history = data});
};

我正在尝试编写一个测试,以确保 api 被调用,和/或数据部分实际上被分配给 item.bid_history 属性。下面是我现在的测试。

测试

it ('refresh_bid_history calls get_history API', inject(function () {
var item_json = mock_item_details_json();
var item = ItemService.get_item(fb_ref, item_json);
item.bid_history = [];
item.refresh_bid_history();
expect(item.bid_history.length).toEqual(1);
expect(item.bid_history[0].placed_at._d).toBeDefined();
}));

如果您需要更多信息,我可以尝试提供。

最佳答案

当您的 API 返回一个 Promise 时,您的 expect 应该不起作用,因为当 expect 被执行时,您的 item.bid_history 不是已更新。

您可以使用 Mocha 直接测试您的 API get_history .最新版本原生支持测试 Promise,请参阅本文:Mocha With Promises .

或者,如果您想测试您的服务,这是我的 test example待办事项MVC。也许你可以从中得到一些想法。

为简单起见:

  1. 使用$httpBackend模拟后端;
  2. 运行您的服务;
  3. 验证结果。

关于javascript - 单元测试以确保函数调用 api 并将数据分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430530/

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