我有一个使用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(); });
控制器测试:
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 }); })); it('should attach a list of awesomeThings to the scope',function () { $httpBackend.whenGET('locale/locale-en.json').respond(200,{ "TITLE": 'My App' }); expect(scope.awesomeThings.length).toBe(3); }); });
文档控制器只是标准生成的控制器.
您必须在配置阶段指定首选语言,而不是运行阶段.所以$translate.uses(‘us’)变成$translateProvider.preferredLanguage(‘us’).
useLocalStorage()也是如此.这些都是配置$translate服务的方法.
useLocalStorage()也是如此.这些都是配置$translate服务的方法.
您还应该尝试避免使用uses()来设置默认语言.请改用preferLanguage().原因是,$translate.uses()尝试尽快加载i18n文件,如果有一个cookie或类似的使用另一个语言密钥,uses()将加载两个文件,这就是我们引入preferredLanguage()的原因,是的,这应该解决问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。