gpt4 book ai didi

angularjs - Jasmine 。 angular.service 。 Angular promise 。怎样才能让他们一起玩呢?

转载 作者:行者123 更新时间:2023-12-02 23:23:28 25 4
gpt4 key购买 nike

我正在关注this example

我们有这样的测试套件:

describe('Basic Test Suite', function(){
var DataService, httpBackend;

beforeEach(module('iorder'));
beforeEach(inject(
function (_DataService_, $httpBackend) {
DataService = _DataService_;
httpBackend = $httpBackend;
}
));
//And following test method:
it('should call data url ', function () {
var promise = DataService.getMyData();
promise.then(function(result) {
console.log(result, promise); // Don't gets here
}).finally(function (res) {
console.log(res); // And this is also missed
})
})
});

如何使 jasmine + karma 与 Angular 服务一起工作,从而返回 promise ?

我见过this question ,但看起来它是关于在测试用例中使用 promise 。不是关于测试 promise 。

最佳答案

您需要告诉 jasmine 您的测试是异步的,以便它等待 promise 解决。您可以通过向测试中添加 done 参数来完成此操作:

describe('Basic Test Suite', function(){
var DataService, httpBackend;

beforeEach(module('iorder'));
beforeEach(inject(
function (_DataService_, $httpBackend) {
DataService = _DataService_;
httpBackend = $httpBackend;
}
));
//And following test method:
it('should call data url ', function (done) {
var promise = DataService.getMyData();
promise.then(function(result) {
console.log(result, promise); // Don't gets here
done();//this is me telling jasmine that the test is ended
}).finally(function (res) {
console.log(res); // And this is also missed
//since done is only called in the `then` portion, the test will timeout if there was an error that by-passes the `then`
});
})
});

通过将 done 添加到测试方法,您可以让 jasmine 知道这是一个异步测试,它将等待直到调用 done 或超时。我通常只是在 then 中调用 done 并依靠超时来使测试失败。或者,我相信您可以使用某种错误对象调用 done ,这也会导致测试失败,因此您可以在 catch 中调用它。

关于angularjs - Jasmine 。 angular.service 。 Angular promise 。怎样才能让他们一起玩呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825128/

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