2015-04-23 4 views
2

Я только начал пробираться через единичное и сквозное тестирование для углового приложения.Где объявить модуль ngMock

Я смущен относительно того, где я должен объявлять модули ngMock и ngMocke2e. Мой файл bower.json ссылается на ngMock, а файл index.html указывает на скрипт angular-mocks.js.

Однако, когда я объявляю ngMock в зависимостях моего app.js, приложение не загружается. Кроме того, в консоли не отображаются ошибки.

Мне нужно использовать эти модули для тестирования, но кажется интуитивно понятным вводить их в приложение от app.js.

ответ

2

Вам не нужно добавлять угловые макеты к основному app.js Вам нужно вставлять угловые-издевки в свой конфиг кармы, который является единственным местом, в котором это нуждается.

Например:

module.exports = function(config) { 
    'use strict'; 

    config.set({ 

    files: [ 
     'bower_components/angular/angular.js', 
     'bower_components/angular-resource/angular-resource.js', 
     ... 
     'bower_components/angular-mocks/angular-mocks.js' 
     ... 

    ] 

    }); 
}; 
+0

Спасибо Тони. Просто для того, чтобы помещать источник в замешательство, я работаю с угловыми документами: link. В нем говорится, что он должен быть включен как зависимый модуль: 'angular.module ('app', ['ngMock'])'; – abyrne85

+0

@ abyrne85 удовольствие! Угловые документы не самые лучшие ... Я думаю, что есть несколько способов, которыми вы можете их использовать - в документах он вводит прямо в декларацию «обычного» модуля в приложении, но для вашего случая, с кармой, только карма нуждается в этом - вам это не нужно в приложении. Он предназначен только для тестирования - чтобы помочь вам вводить угловые сервисы в свои тесты. Лично я не видел, чтобы он вводил куда угодно, кроме кармы conf. –

2

Как отмечалось в ответе от Tony Barnes, вы можете зарегистрировать исходный файл ngMock в карме конфигурации.

Для получения дополнительной информации о том, как это работает; как только функция ngMock inject вызывается в первый раз, она выполняет bootstrap приложения и автоматически включает модули «ng» и «ngMock» вместе с модулем (модулями), зарегистрированными для наших модульных тестов.

Вот почему нам не нужно писать код по строкам angular.module('app', ['ngMock']), чтобы настроить наши тесты, но он также немного волшебный, так как не очевидно, что этот шаг начальной загрузки для нас сделан.

Я написал несколько AngularJS Unit Testing Tutorials, таких как ngMock Fundamentals for AngularJS - Understanding Inject, которые углубляются в концепции гномических.

Смежные вопросы