gpt4 book ai didi

javascript - Angular JS 中的单元测试 promise

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

我正在尝试对以下功能进行单元测试:

   Service.test = function(id) {
return this.getDetails(id).then(function (details){

return "name";
});
};

到目前为止,我已经自己尝试过并做了以下事情:

describe(
'TempServ',
function() {
var TempSer, $httpBackend, $q, CapabilityService;

beforeEach(inject(function(_TempServ_, _$httpBackend_, _$q_,
_CapabilityService_) {
TempServ = _TempServ_;
$q = _$q_;
$httpBackend = _$httpBackend_;
CapabilityService = _CapabilityService_;
}));

it(" should be in Pending state",function() {
spyOn(TemplateService, 'getDetails').and.callThrough();
console.log(TemplateService.test());

});

});

我想要一些东西,它可以模拟 getDetails,我可以返回我想要的东西,而不是真正会返回的东西,并测试函数完全独立工作。只有 getDetails 被 mock !

最佳答案

尝试做这样的事情

spyOn(TemplateService, 'getDetails').and.returnValue($q.when('mockDetails'));
$rootScope.$digest();

这将允许您进行如下测试:

it('should be in pending state', function(done) {
spyOn(TemplateService, 'getDetails').and.returnValue($q.when('mockDetails'));


TemplateService.test().then(function(result) {
expect(result).toBe('name'); // this could also be a value computed with "mockDetails"
done();
});

$rootScope.$digest();
});

关于javascript - Angular JS 中的单元测试 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019752/

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