2015-07-12 2 views
2

Это мой первый тест при тестировании приложения, и это немного болит голова. Я создал тестовую среду. Мой index.html для жасмин в моей тестовой папке выглядит следующим образом:Проблема с жасмином и кармой с основой

index.html

<!doctype html> 
<html> 
    <head> 
    <title>Jasmine Spec Runner</title> 
    <link rel="stylesheet" href="../bower_components/jasmine/lib/jasmine-core/jasmine.css"> 
    </head> 
    <body> 
    <script src="../bower_components/jasmine/lib/jasmine-core/jasmine.js"></script> 
    <script src="../bower_components/jasmine/lib/jasmine-core/jasmine-html.js"></script> 
    <script src="../bower_components/jasmine/lib/jasmine-core/boot.js"></script> 

    <!-- include source files here... --> 
    <script src="../public/js/main.js"></script> 
    <script src="../public/js/AppView.js"></script> 
    <script src="../public/js/FormLoanView.js"></script> 
    <script src="../public/js/FormLoanModel.js"></script> 
    <script src="../public/js/ResponseLoanModel.js"></script> 
    <script src="../public/js/ResultLoanView.js"></script> 

    <!-- include spec files here... --> 
    <script src="spec/test.js"></script> 
    </body> 
</html> 

test.js

(function() { 
describe('Form Model', function() { 

    describe('when instantiated', function() { 

    it('should exhibit attributes', function() { 
     var formModel = new FormLoanModel({}); 
     console.log(formModel) 
     expect(formModel.get("Annual Income")) 
     .toEqual(""); 
    }); 

    }); 

}); 
})(); 

При открытии моего index.html я получаю следующее сообщение:

TypeError: undefined is not a function 

Итак, похоже, что он запускает мой тест. После открытия хромированных инструментов разработчика, я получаю следующее:

Uncaught ReferenceError: Backbone is not defined 

Так я понял, JQuery и Backbone не загружаются в тест. Я пришел узнать, что Карма помогает нам автоматизировать многое из этого. После того, как Йомен установил карму. Я сделал изменения в мой karma.conf.js который теперь выглядит следующим образом:

// Karma configuration 
// http://karma-runner.github.io/0.12/config/configuration-file.html 
// Generated on 2015-07-12 using 
// generator-karma 1.0.0 

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

    config.set({ 
    // enable/disable watching file and executing tests whenever any file changes 
    autoWatch: true, 

    // base path, that will be used to resolve files and exclude 
    basePath: '', 

    // testing framework to use (jasmine/mocha/qunit/...) 
    // as well as any additional frameworks (requirejs/chai/sinon/...) 
    frameworks: [ 
     "jasmine" 
    ], 

    // list of files/patterns to load in the browser 
    files: [ "../lib/*.js","../public/js/*.js","./spec/*.js" 
    ], 

    // list of files/patterns to exclude 
    exclude: [ 
    ], 

    // web server port 
    port: 8080, 

    // Start these browsers, currently available: 
    // - Chrome 
    // - ChromeCanary 
    // - Firefox 
    // - Opera 
    // - Safari (only Mac) 
    // - PhantomJS 
    // - IE (only Windows) 
    browsers: [ 
     "Chrome" 
    ], 

    // Which plugins to enable 
    plugins: [ 
     "karma-phantomjs-launcher", 
     "karma-jasmine" 
    ], 

    // Continuous Integration mode 
    // if true, it capture browsers, run tests and exit 
    singleRun: false, 

    colors: true, 

    // level of logging 
    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 
    logLevel: config.LOG_INFO, 

    // Uncomment the following lines if you are using grunt's server to run the tests 
    // proxies: { 
    // '/': 'http://localhost:9000/' 
    // }, 
    // URL root prevent conflicts with the site root 
    // urlRoot: '_karma_' 
    }); 
}; 

файлы, которые я добавил были библиотеками, мои системообразующих модули и моими тесты Жасмина. После ввода karma start я получаю следующий экран успеха на локальном сервере, указанном терминале:

Karma v0.12.37 - connected 
Chrome 43.0.2357 (Mac OS X 10.10.2) is idle 

Итак, наконец, в этот момент я надеялся на index.html после обновления будет правильно запустить мой тест, но это не так. Он все еще предупреждает меня об отсутствии знаний о магистрали и jQuery. Может ли кто-нибудь помочь мне выяснить, где я ошибаюсь?

Файл Strucutre

ROOT 
-----lib 
--------------backbone.js 
--------------underscore.js 
--------------jquery-1.11.3.js 
-----public 
--------------js 
---------------------*backbone modules* 
-----test 
--------------spec 
----------------------test.js 
--------------index.html 
--------------karma.conf.js 
+0

Где именно находится backbone.js? Вы пытались явно записать путь к файлу в массив файлов файла karma.config?Возможно, ваши шаблоны глобусов отключены, и они не соответствуют необходимым файлам, поэтому они не включены. – doldt

+0

Итак, правильно ли я выполняю этот процесс? И это проблема с путями? – theamateurdataanalyst

+0

Я предполагаю, что это ** - это проблема с путями. Где находятся файлы js магистрали, расположенные в вашей файловой системе? – doldt

ответ

0

«BasePath» и атрибуты «Файлы» вашей конфигурации работы Карма вместе, чтобы обслуживать до необходимых файлов в браузере для среды тестирования.

Базовый путь будет оцениваться из рабочего каталога, из которого выполняется Karma, поэтому, если вы запустите его в корневом каталоге вашего проекта, то «../libs/*.js» не будет соответствовать пути для ваших javascript-файлов bower_component, скорее всего.

Если ваше статическое дерево каталогов файлов не запускается в корневом каталоге вашего проекта, убедитесь, что «basePath» указывает, где начинается статическое дерево каталогов.

попробовать ../bower_components/**/*.js или ../**/*.js (файл блоб стиль шаблон) или попытаться добавить отдельную запись в «файлы», что указывает на каждый, т.е.

'../bower_components/jquery/lib/jquery.min.js', '../bower_components/jquery/lib/backbone.min.js'

и т.д., конечно, что делает эти данные указывают на реальные места. Я предполагаю, что это просто проблема с файловым дорожкой, которая мешает им быть найденными, поэтому сервер тестирования Karma не обслуживает их в браузере.

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