在Yeoman AngularJS中使用模拟文件夹进行业力测试
using the mock folder for karma test in yeoman angularjs
我有一个angularjs应用程序,它是用yeoman生成的。在 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 中的模拟文件夹进行模拟功能。是否可以将模拟部分移动到模拟文件夹中并将其用于所有单元测试?
我找不到此文件夹的任何示例或文档。有人可以指出我如何使用模拟文件夹的示例或文档吗?
基本上我已经做了这样的事情来查看角度模拟.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
});
然后在我的测试中,我可以$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
});
}));
});
@gerasalus的例子很有用,但要回答这个问题:
mocks
只是一个文件夹,用于放置代码,以保持项目井井有条,测试中的代码简短而中肯。 通过将所有模拟保存在一个地方,可以更轻松地在测试中重用它们......从 DRY 的角度来看,将它们从一个测试复制到另一个测试将是不好的做法。
,您可能有一个名为"Foo"的服务。
app/service/foo.js
然后,您可以创建该服务的模拟,称为"FooMock"
test/mocks/service/foo.js
然后,您将创建测试并注入所需的任何模拟,如gerasulus的答案所示。
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 展开和折叠文件夹
- 在ng重复循环中显示来自不同文件夹的图像
- 如何将所有JS文件连接到一个文件夹中
- 是否可以用JavaScript显示等效的文件夹对话框
- grunt上的压缩文件夹不起作用
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- 将Windows文件路径组织到文件夹中
- 链接/按钮从子文件夹下载文件--浏览器只是浏览
- 在更改名称时,使用ajax jsp在下拉菜单中填充多个文件夹的数据
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- 如何将JS文件从其他文件夹链接到页面
- 单元测试 - 测试文件计数和文件夹大小
- 在Yeoman AngularJS中使用模拟文件夹进行业力测试
- 正在文件夹中运行所有已浏览的Mocha测试
- 当我尝试使用茉莉花测试时,应用程序文件夹没有在ext . application中加载
- 因果报应测试将不必要的文件夹添加到路径中
- Protractor e2e测试用例的推荐文件夹结构是什么
- 我可以用jasminice和rails 3.2.8测试我的公用文件夹中的javascript文件吗