2016-05-27 2 views
1

Я пытаюсь отлаживать некоторые тесты Jasmine, которые я написал с помощью WebStorm 2016.1.2.NodeJS, WebStorm и Jasmine: ReferenceError: описание не определено при отладке

Мой тестовый код выглядит следующим образом:

var should = require("should"); 
var myLib = require("../my-lib"); 

describe("Scenario",() => { 
    it("works as expected",() => { 
     myLib.do().should.not.throw() 
    }); 
}); 

Моя структура каталогов выглядит следующим образом:

│ 
├───node_modules 
│ ├───.bin 
│ ├───aws-sdk 
│ │ └───<snip> 
│ ├───jasmine 
│ │ └───<snip> 
│ ├───jasmine-core 
│ │ └───<snip> 
│ ├───karma 
│ │ └───<snip> 
│ ├───karma-jasmine 
│ │ └───<snip> 
│ ├───should 
│ │ └───<snip> 
│ └───sinon 
│  └───<snip> 
├───spec 
│ ├───support 
│ │ └───jasmine.json 
│ └───my-lib.spec.js 
└───my-lib.js 

И мои NodeJS настройки в WebStorm выглядеть следующим образом:

WebStorm Javascript Library Settings

Отладка Я просто ударяю F 5 и выбрав файл my-lib.spec.js для запуска. Затем я получаю следующую трассировку стека:

"C:\Program Files (x86)\JetBrains\WebStorm 2016.1.2\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=22714 my-lib.spec.js 
Debugger listening on port 22714 
c:\Users\<me>\WebstormProjects\my-lib\spec\my-lib.spec.js:4 
describe("Scenario",() => { 
^ 

ReferenceError: describe is not defined 
    at Object.<anonymous> (c:\Users\<me>\WebstormProjects\my-lib\spec\<my-lib>.js:4:1) 
    at Module._compile (module.js:410:26) 
    at Object.Module._extensions..js (module.js:417:10) 
    at Module.load (module.js:344:32) 
    at Function.Module._load (module.js:301:12) 
    at Module.runMain [as _onTimeout] (module.js:442:10) 
    at Timer.listOnTimeout (timers.js:92:15) 

Process finished with exit code 1 

Если кто-нибудь знает, как сделать WebStorm признать, что Jasmine установлен во всем мире, что было бы здорово.

EDIT: Я настроил конфигурацию запуска Карма, как предложено Леной со следующей конфигурацией: Karma configuration

Когда я ударил F5 для запуска этого, браузер Chrome выскакивает и является пустым (I у вас установлен плагин JetBrains для Chrome)

+0

Вы не должны использовать мокко наряду с должны? –

+0

Можете ли вы просто потребовать («жасмин»); в тестовом файле? – joshvito

ответ

1

Попробуйте использовать модуль jasmine-node.

Это зависит от команды отправки файла js при нажатии F5. Это должно быть jasmine-node <test files> не node <test files>.

Попробуйте сделать это в консоли/терминале и посмотрите, работает ли он. Это может быть веб-шторм, отправив неправильную команду.

Если вы не получили жасмин узел установлены, вы можете сделать

npm install jasmine-node -g

+1

'jasmine-node' не был обновлен в течение длительного времени и не поддерживает последнюю версию Jasmine. – brimble2010

1

Вы используете конфигурацию запуска Node.js для запуска тестов - и узел ничего не знает о вашей тестовой структуре. Вы должны использовать тестовый бегун (например, карма, поскольку у вас установлена ​​карма). Попробуйте использовать конфигурацию запуска кармы. См. https://confluence.jetbrains.com/display/WI/Running+JavaScript+tests+with+Karma.

Кстати, если вам нравится использовать РЕКОМЕНДУЕМЫЙ с кармой, попробуйте karma-should

-1

В основной папке есть файл «package.json». Открыть, что и вы увидите что-то вроде этого:

{ 
    "name": "prep", 
    "version": "1.0.0", 
    "main": "server/server.js", //This can be different 
    "scripts": { 
    "lint": "eslint .", 
    "start": "node .", 
    "posttest": "npm run lint && nsp check" 
    }, .... 

Затем добавьте следующий после «запуска»: «узел» => «Тест»: «жасмин». Он должен выглядеть следующим образом:

{ 
    "name": "prep", 
    "version": "1.0.0", 
    "main": "server/server.js", 
    "scripts": { 
    "lint": "eslint .", 
    "start": "node .", 
    "test": "jasmine", 
    "posttest": "npm run lint && nsp check" 
    },.... 

Затем запустите «тест НПМ» в терминале

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