单元测试 – 如何使用angular-translate进行单元测试
|
我使用angular translate从这里(
http://pascalprecht.github.io/angular-translate/),它的工作正常,但它打破了我的控制器的单元测试错误:
Unexpected request: GET scripts/i18n/locale-en.json 我不知道为什么? 我使用yeoman和测试与业力。 app.js: 'use strict';
(function() {
angular.module('wbApp',['authService','authUserService','checkUserDirective','ui.bootstrap','pascalprecht.translate'])
.config(function($routeProvider) {
$routeProvider
.when('/',{
templateUrl: 'views/login.html',controller: 'LoginCtrl',access: {
isFree: true
}
})
.when('/main',{
templateUrl: 'views/main.html',controller: 'MainCtrl',access: {
isFree: false
}
})
.otherwise({
redirectTo: '/'
});
});
})();
configTranslate.js: 'use strict';
(function() {
angular.module('wbApp')
.config(['$translateProvider',function($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'scripts/i18n/locale-',suffix: '.json'
});
$translateProvider.preferredLanguage('en');
}]);
})();
karma.conf.js: files = [ ... 'app/bower_components/angular-translate/angular-translate.js','app/bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js',... ]; 控制器测试: 'use strict';
describe('Controller: LoginCtrl',function() {
// load the controller's module
beforeEach(module('wbApp'));
var LoginCtrl,scope,location,httpMock,authUser;
// Initialize the controller and a mock scope
beforeEach(inject(function($controller,$rootScope,$location,$httpBackend,AuthUser) {
authUser = AuthUser;
location = $location;
httpMock = $httpBackend;
scope = $rootScope.$new();
LoginCtrl = $controller('LoginCtrl',{
$scope: scope
});
httpMock.when('GET','scripts/i18n/locale-en.json').passThrough();
}));
it(...);
...
});
如果我添加这在测试控制器,产品相同的错误: httpMock.when('GET','scripts/i18n/locale-en.json').respond(200);
httpMock.flush();
要么 httpMock.when('GET','scripts/i18n/locale-en.json').passThrough();
httpMock.flush();
我发现这个帖子How do I test controllers with Angular Translate initialized in App Config?,但没有帮助我:/ 我广泛地使用$ httpBackend在我的测试和它的工作正常,但在这种情况下,它是无效的。如果我评论的行: $translateProvider.preferredLanguage('en');
显然一个错误,如果我添加上运行时(在我的控制器) $translate.uses(local); 我最后有同样的错误? 所以我转向翻译配置(configTranslate.js)或在运行时是一样的结果: Unexpected request: GET scripts/i18n/locale-en.json 这里是我测试的语法,在一个“beforeEach(inject(function(…}); 或在测试“it(‘…’,function(){…});” httpMock.expectGET('scripts/i18n/locale-en.json');
httpMock.when('GET','scripts/i18n/locale-en.json').passThrough();
httpMock.when('GET','scripts/i18n/locale-en.json').respond(data);
与结束 httpMock.flush(); 我也试过一个$ apply httpMock.expectGET('scripts/i18n/locale-fr.json');
scope.$apply(function(){
$translate.uses('fr');
});
httpMock.flush();
没有什么发生,仍然这个错误驱使我疯了.. 如果你有任何建议
这是一个已知的问题,请按照文档:
unit testing angular
beforeEach(module('myApp',function ($provide,$translateProvider) {
$provide.factory('customLoader',function () {
// loader logic goes here
});
$translateProvider.useLoader('customLoader');
}));
请阅读更多在上面的链接提供。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Angular 2:在创建组件时动态插入捕获元素(动态)
- Xfire调用WebServices时报com.bea.xml.stream.MXParserFact
- bash – 规范化solaris上的路径名
- unix – 如何从tar提取单个文件到不同的目录?
- AngularJS 1.x学习<2>
- scala – PairRDD的总和值
- Haskell和Vim:适当的缩进
- scalatest – 未知工件??sbtplugin使用scala 2.12的超级安全
- WebService学习笔记-Ajax请求Webservice
- angularjs – 防止angular-ui-router在首页加载时重新加载u
