2014-02-04 3 views
0

Я работаю над модульными тестами для приложения AngularJS. У меня есть файл CSV с тестовыми примерами, который я хотел бы взять в конкретный набор, но я недостаточно разбираюсь в Jasmine, Karma или Node в целом, чтобы понять, как это сделать. Я полагаю, что мне нужно установить пакет csv, но как только это будет сделано, мне не ясно, как получить к нему доступ.Загрузка тестовых данных из файла CSV

Инструкции по использованию пакета csv RequireJS, но я не видел примеров кода, который интегрирует RequireJS в угловое семя. This page на сайте Karma описывает совершенно другую структуру/поток приложения к угловому семени, которое я использую в настоящее время.

EDIT: Благодаря ответу marfarma я установил karma-browserify и теперь имею доступ к node.js-style require в моих случаях отдыха. Однако, файловая система, кажется, сломана:

describe("MyController", function() { 
    var fs = require('fs'); 
    console.log(fs, fs.readFile); 
}); 

Напечатает:

LOG: Object{exists: undefined}, undefined 

Это работает с использованием PhantomJS - это просто так, что я не в состоянии получить доступ к файловой системе во время записи тесты для запуска в браузерах?

+0

«это просто случай, когда я не смогу получить доступ к файловой системе во время написания тестов для запуска в браузерах?» - да –

+0

добавлена ​​работа вокруг моего ответа –

+0

@marfarma Спасибо! Я попробую этот метод. Я предполагаю, что тестирование с использованием «jasmine-node» облегчило бы это, но я предпочитаю «карму», поэтому мне просто придется укусить пулю. –

ответ

1

Требуется пакет csv, который вы связали с использованием стиля node.js. Browserify поддерживает их использование в браузере. Вот несколько учебников по Browserify & Angularjs:

И, так как вы не можете прочитать непосредственно из файловой системы из браузера, служить ваш CSV файл вместе с вашим угловым приложением, например:

var request = require('request'); 
var done = false; 

request("http://localhost:8080/data.csv", function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) // body is the csv data -- parse and save for later use 
    } 
    done = true; 
}) 

waitsFor(function() { 
    return done; 
}, "csv data fetch never completed.", 10000); 

// use it 

describe('it should work',function() { 
    ... 
}); 
+0

Спасибо за подсказку. Я начал интегрировать 'karma-browserify', но это создает некоторые проблемы в моем наборе тестов. Этот плагин требует, чтобы я «просматривал» мои файлы с исходными файлами приложений? –

+0

В частности, мои вызовы 'beforeEach (module ('app'));' не работают с 'TypeError', поэтому выполняются только мои модульные тесты для не-угловых utils. –

+1

Хорошо, я понял, что 'module' был определен' browserify', и его определение заслоняло функцию 'module', предоставляемую кодом углового макетного тестирования. Я заменил свои вызовы 'module' на' angular.mock.module', и все работает! Благодарю. –

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