单元测试 – 如何使用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