2013-05-13 14 views
6

При использовании тестовой библиотеки javascript karta вместе с Rails, где должны тестироваться файлы и издеваться над данными?Karma + Rails: Структура файла?

Кажется странным иметь их в/assets/потому что мы фактически не хотим обслуживать их пользователей. (Но я думаю, что если они просто никогда не были предварительно скомпилированы, то это не настоящая проблема, верно?)

ответ

3

Мы закончили тем, что ставили тесты и издевались над папкой spec приложения Rails и настраивали Карму для их импорта, а также наши протестированные код от app/assets.

Работы для нас. Другие мысли приветствуются.

Наш config/karma.conf.js файл:

basePath = '../'; 

files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 

    //libs 
    'vendor/assets/javascripts/angular/angular.js', 
    'vendor/assets/javascripts/angular/angular-*.js', 
    'vendor/assets/javascripts/jquery-1.9.1.min.js', 
    'vendor/assets/javascripts/underscore-min.js', 
    'vendor/assets/javascripts/angular-strap/angular-strap.min.js', 
    'vendor/assets/javascripts/angular-ui/angular-ui.js', 
    'vendor/assets/javascripts/angular-bootstrap/ui-bootstrap-0.2.0.min.js', 

    //our app! 
    'app/assets/javascripts/<our-mini-app>/**', 

    // and our tests 
    'spec/javascripts/<our-mini-app>/lib/angular/angular-mocks.js', 
    'spec/javascripts/<our-mini-app>/unit/*.coffee', 
    // mocked data 
    'spec/javascripts/<our-mini-app>/mocked-data/<data-file>.js.coffee', 
]; 

autoWatch = true; 

browsers = 'PhantomJS'.split(' ') 

preprocessors = { 
    '**/*.coffee': 'coffee' 
} 
+0

Я создал папку/spec/angle, где я помещал каждый тестовый файл, имея/spec/angle/e2e,/spec/angular/unit и т. Д. Но как вы настроили karma.conf.js? Я не уверен, что атрибут proxies прав: 'proxies = { '/': 'http: // localhost: 3000 /' };' У меня есть ошибки для запуска даже простого теста, это похоже на javascript источники для тестирования не включены. – p1nox

+0

PD: Я работаю с устаревшим кодом, который использует application.js.erb как манифест для всех файлов javascript, даже углового приложения, в моем файле karma.conf.js У меня есть 'files = [ ANGULAR_SCENARIO, ANGULAR_SCENARIO_ADAPTER, '. ./../app/assets/javascripts/application.js ', ' */* Spec.js ' ]; ' – p1nox

+0

BTW Я тестирую, существует ли модуль под названием« StSelector »и он работает (http: //www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html#testing-modules), и я получаю «Midway: тестовые модули. Модуль StSelector: должен быть зарегистрирован FAILED \t Ошибка: Нет модуля: StSelector' – p1nox

8

Через этот пост: https://groups.google.com/forum/#!topic/angular/Mg8YjKWbEJ8

Я экспериментировал с чем-то, что выглядит следующим образом:

// list of files/patterns to load in the browser 
files: [ 
    'http://localhost:3000/assets/application.js', 
    'spec/javascripts/*_spec.coffee', 
    { 
    pattern: 'app/assets/javascripts/*.{js,coffee}', 
    watched: true, 
    included: false, 
    served: false 
    } 
], 

Это часы приложение файлы расслоение плотной, но Безразлично 't включать их или обслуживать их, вместо этого включая application.js, обслуживаемый рельсами и звездочками.

Я также играл с https://github.com/lucaong/sprockets-chain, но не нашел способ использовать requirejs для включения js-файлов из драгоценных камней (например, jquery-rails или angularjs-rails).

+0

Это похоже на хорошее решение. Я предполагаю, что это немного медленнее, чем предлагает решение @ alan-h. – opsb

+1

Мне понравилось это решение. Он решает проблему для загрузки файлов с .js.erb. – Adrian

+0

Это имеет смысл. –