node-qunit не включает мои исходные файлы в область видимости - PullRequest
4 голосов
/ 14 января 2012

Я установил node-qunit (стабильный) из npm, но не могу заставить работать какие-либо тесты.Мои исходные файлы, похоже, не включены в область действия.

. / Source / myscript.js:

var myObj = {
    a : true
}

. / Test / tests.js:

test("that a is true", function () {
     ok(myObj.a);
});

. / Test / runner.js:

var runner = require('qunit');
runner.run({
    code : './source/myscript.js',
    tests : './test/tests.js'
});

. / Makefile:

test :
<tab>node ./test/testrunner.js

.PHONY: install test

Если я запускаю make test, я получаю ошибку 'ReferenceError: myObj is not defined'.Исходный файл работает, потому что он может выдавать ошибки.Похоже, что он не включен в глобальный охват, как следует.Это не сработает, если я сделаю это из командной строки, согласно инструкциям в readme node-qunit.У кого-нибудь есть идеи, как заставить это работать?

1 Ответ

5 голосов
/ 14 января 2012

Вы ничего не экспортируете.За кулисами node-qunit использует require для загрузки указанных модулей.Чтобы выставить переменные, когда модуль require d, вы должны добавить их к объекту exports (или назначить свой собственный объект для переменной exports)

(естьтакже синтаксическая ошибка - ; в литерале объекта)

Это работает для меня:

. / source / myscript.js:

exports.myObj = {
  a: true
}

. / test/tests.js:

QUnit.module('tests')

test("that a is true", function () {
  ok(myObj.a)
})

. / test / runner.js:

var runner = require('qunit')

runner.run({
  code : './source/myscript.js'
, tests : './test/tests.js'
})
...