使用Karma/Jasmine为角度应用程序设置单元测试套件时,是否建议config在测试文件中包含带有app模块功能的js ?
我已经读过,建议将其从测试中排除,但这看起来很尴尬,因为在config函数中经常会发生关键设置,导致应用无法正常工作.
围绕这个最好的做法是什么?创建一个模拟配置函数,以"模拟"方式执行相同的操作?
我自己正在讨论这个问题,但是想要了解更广泛的策略: 如何使用angular-translate进行单元测试
我有一个使用Angular Translate的应用程序(https://github.com/PascalPrecht/angular-translate).翻译通过浏览器在应用程序中运行良好,但当我尝试测试任何控制器时,我得到错误:意外请求:GET locale/locale-en.json.我如何对我的控制器进行单元测试,因为translate在启动时会对语言文件进行GET请求?
我正在使用与Karma的yeoman角度发生器.
App.js:
angular.module('myApp', ['ngCookies', 'ui.bootstrap', 'pascalprecht.translate'])
.config(function ($routeProvider, $locationProvider, $translateProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
$translateProvider.useStaticFilesLoader({
prefix: 'locale/locale-',
suffix: '.json'
});
$translateProvider.uses('en');
$translateProvider.useLocalStorage();
});
Run Code Online (Sandbox Code Playgroud)
控制器测试:
describe('Controller: DocumentationCtrl', function () {
// load the controller's module
beforeEach(module('myApp'));
var DocumentationCtrl,
scope,
$httpBackend;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, $injector) {
$httpBackend = $injector.get('$httpBackend');
scope = $rootScope.$new();
DocumentationCtrl = $controller('DocumentationCtrl', {
$scope: scope …Run Code Online (Sandbox Code Playgroud)