Tôi có một ứng dụng sử dụng Dịch vụ Góc (https://github.com/PascalPrecht/angular-translate). Dịch hoạt động tốt trong ứng dụng thông qua trình duyệt nhưng khi tôi thử kiểm tra bất kỳ bộ điều khiển nào, tôi nhận được Lỗi: Yêu cầu không mong muốn: GET locale/locale-en.json. Làm thế nào để đơn vị kiểm tra bộ điều khiển của tôi từ khi dịch yêu cầu GET cho tệp ngôn ngữ khi khởi động?Làm cách nào để kiểm tra bộ điều khiển với Angular Translate được khởi tạo trong App Config?
Tôi đang sử dụng trình tạo góc yeoman với Karma.
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();
});
điều khiển kiểm tra:
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);
});
});
Controller Tài liệu chỉ là một tiêu chuẩn được tạo ra bộ điều khiển.
Cảm ơn bạn rất nhiều vì câu trả lời. Tôi vẫn không chắc chắn làm thế nào để kiểm tra này mặc dù tôi đã chuyển sang preferredLanguage() vì vậy app.config của tôi trông như thế này: $ translateProvider.useStaticFilesLoader ({ tiền tố: 'locale/locale-', hậu tố: '.json ' }); $ translateProvider.preferredLanguage ('us'); $ translateProvider.useLocalStorage(); – Zacho
Ồ và lỗi xảy ra vì bạn không mong đợi một yêu cầu nhận được http được giải thích. Vì vậy, trong nó() spec của bạn, bạn nên làm một cái gì đó như: $ http.expectGET ('locale/locale-us.json'); Và đừng quên xóa các reponses đang chờ xử lý thông qua $ http.flush(); – PascalPrecht
Tôi nhận được nó hoạt động. Việc sửa chữa là sử dụng preferredLanguage() và ghi đè lên hàm trước khi khởi tạo ứng dụng trong bài kiểm tra đơn vị của tôi. Đây là một ứng dụng khá lớn và tôi không muốn đưa locale expectGET vào mọi thử nghiệm đơn vị. Cảm ơn! – Zacho