node-qunit не включает мои исходные файлы в область видимости


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

./источник/именем MyScript.js:

var myObj = {
    a : true
}

./ тест / тесты.js:

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

./ тест / бегун.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'. Исходный файл действительно запускается, потому что он может выдавать ошибки. Он просто не кажется включенным в глобальную сферу, как это должно быть. Это не сработает, если я буду делать это с самого начала. командная строка, согласно инструкциям в узле - QUnit readme . У кого-нибудь есть идеи, как заставить это работать?

1 4

1 ответ:

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

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

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

./источник/именем MyScript.js:

exports.myObj = {
  a: true
}

./ тест / тесты.js:

QUnit.module('tests')

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

./ тест / бегун.js:

var runner = require('qunit')

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