gpt4 book ai didi

javascript - Jasmine : mocking Bower library

转载 作者:行者123 更新时间:2023-12-03 11:08:06 24 4
gpt4 key购买 nike

我正在尝试创建一个模拟来测试依赖于 Bower 管理的另一个服务的服务。 Jasmine 测试的代码如下(完整示例位于 plunker ):

describe('jsonrpc', function() {
'use strict';

var uuidMock, $httpBackend, jsonrpc;

beforeEach(module('jsonrpc', function ($provide) {
uuidMock = {};
uuidMock.generate = function () { return 0; };
$provide.value('uuid', uuidMock);
}));

beforeEach(inject(function(_jsonrpc_, _$httpBackend_) {
jsonrpc = _jsonrpc_;
$httpBackend = _$httpBackend_;
}));

it('should have created $httpBackend', function() {
expect($httpBackend.get).toBeDefined();
});

});

“jsonrpc”服务提供者定义如下:

angular.module('jsonrpc', ['uuid']).provider('jsonrpc', function() {
'use strict';

var defaults = this.defaults = {};
defaults.basePath = '/rpc';

this.$get = ['$http', 'uuid4', function($http, uuid4) {
function jsonrpc(options, config) {

... (etc) ...

当我尝试模拟“jsonrpc”模块对“uuid”模块的依赖性时,出现以下错误:

$injector:modulerr http://errors.angularjs.org/1.2.16/$injector/modulerr?p0=jsonrpc&p1=%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.16%2F%24injector%2Fmodulerr%3Fp0%3Duuid%26p1%3D%255B%2524injector%253Anomod

在模拟这种依赖关系时我做错了什么?

最佳答案

你所做的事情是不对的,因为你正在修改 jsrpc 模块的提供者,而不是 uuid 模块,并且你只是调用 $provide.value 来提供应该是整个模块的内容(而不是一个值) )

如果 uuid4 是您需要模拟的 uuid 的唯一部分,您可以这样做

module('jsrpc', function($provide) {
$provide.service('uuid4', uuid4Mock)
});

其中 uuid4Mock 仅提供该服务或其中的任何内容的行为。

关于javascript - Jasmine : mocking Bower library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749618/

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