Jasmine:模拟 Bower 库
Jasmine: mocking Bower library
我正在尝试创建一个模拟来测试依赖于 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 仅提供该服务的行为,或其中的任何内容。
我正在尝试创建一个模拟来测试依赖于 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 仅提供该服务的行为,或其中的任何内容。