gpt4 book ai didi

javascript - 在 yeoman angularjs 中使用模拟文件夹进行 karma 测试

转载 作者:数据小太阳 更新时间:2023-10-29 04:10:43 24 4
gpt4 key购买 nike

我有一个使用 yeoman 生成的 angularjs 应用程序。在 karma.conf.js 中是对 test/mock/**/*.js 的引用。我很难弄清楚,我是如何使用这个文件夹的。目前我有一个简单的服务:

'use strict';

angular.module('tvcalApp')
.factory('Series', function ($resource) {
return $resource('/search/:search');
});

和一个测试

'use strict';

var $httpBackend;

describe('Service: Series', function () {

// load the service's module
beforeEach(module('tvcalApp'));

// instantiate service
var Series;
beforeEach(inject(function (_Series_) {
Series = _Series_;
}));

beforeEach(inject(function ($injector) {
var url_get = '/search/The%20Simpsons';

var response_get = [{"seriesid": "71663"}];

$httpBackend = $injector.get('$httpBackend');

$httpBackend.whenGET(url_get).respond(response_get);

}));

it('should return a list if search for The Simpsons', function () {
var res = Series.query({search: 'The Simpsons'});
$httpBackend.flush();
expect(res[0].seriesid === 71663);
});

});

这是有效的。但我想知道我是否可以使用 karma.conf.js 中的模拟文件夹来实现模拟功能。是否可以将 mock 部分移动到 mock 文件夹中并将其用于所有单元测试?

我找不到此文件夹的任何示例或文档。有人可以指点我如何使用模拟文件夹的示例或文档吗?

最佳答案

基本上我在 angular-mocks.js 中做了这样的事情:
假设可能应用程序称为 ql。我有一个我想模拟的登录服务:

mocks/servicesMock.js 看起来像这样:

'use strict';

var ql = {};
ql.mock = {};

ql.mock.$loginServiceMockProvider = function() {
this.$get = function() {
var $service = {
login: function() { }
};
return $service;
};
};

angular.module('qlMock', ['ng']).provider({
$loginServiceMock: ql.mock.$loginServiceMockProvider
});

然后在我的测试中我可以注入(inject) $loginServiceMock:

'use strict';

describe('LoginController tests', function () {
// load the controller's module
beforeEach(module('ql'));
// load our mocks module
beforeEach(angular.mock.module('qlMock'));

var loginController,
loginServiceMock,
scope;

// Initialize the controller and a mock scope
// $loginSericeMock will be injected from serviceMocks.js file
beforeEach(inject(function ($controller, $rootScope, $loginServiceMock) {
scope = $rootScope.$new();
loginServiceMock = $loginServiceMock;
loginController = $controller('LoginController', {
$scope: scope,
loginService: loginServiceMock
});
}));
});

关于javascript - 在 yeoman angularjs 中使用模拟文件夹进行 karma 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674554/

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