相关疑难解决方法(0)

单元测试时如何处理角度模块的配置功能?

使用Karma/Jasmine为角度应用程序设置单元测试套件时,是否建议config在测试文件中包含带有app模块功能的js ?

我已经读过,建议将其从测试中排除,但这看起来很尴尬,因为在config函数中经常会发生关键设置,导致应用无法正常工作.

围绕这个最好的做法是什么?创建一个模拟配置函数,以"模拟"方式执行相同的操作?

我自己正在讨论这个问题,但是想要了解更广泛的策略: 如何使用angular-translate进行单元测试

jasmine angularjs karma-runner

12
推荐指数
1
解决办法
2583
查看次数

如何使用App 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)

jasmine angularjs gruntjs yeoman karma-runner

6
推荐指数
1
解决办法
7153
查看次数

标签 统计

angularjs ×2

jasmine ×2

karma-runner ×2

gruntjs ×1

yeoman ×1