Как загрузить файл для тестирования с помощью жасмина Node?
У меня есть простой файл JavaScript, color.js
и соответствующий файл spec, colorSpec.js
.
color.js:
function Color()
{
}
colorSpec.js:
require('./color.js');
describe("color", function() {
it("should work", function() {
new Color(255, 255, 255);
});
});
Когда я запускаю jasmine-node colorSpec.js
, я получаю следующее исключение:
ReferenceError: Color is not defined
Как я могу заставить Jasmine загрузить мой файл color.js
перед запуском colorSpec.js
?
Ответы
Ответ 1
вы можете загрузить color.js в colorSpec.js с требованием(). Я не вижу, как жасмин может угадать все зависимости, если вы не сообщите жасмину, что они точно в вашем spec файле.
Редактировать:
Быстрое и грязное решение, но, возможно, в Jasmine есть что-то, что можно сделать:
fs = require('fs')
myCode = fs.readFileSync('./color.js','utf-8') // depends on the file encoding
eval(myCode)
тогда ваш класс должен быть доступен с жасмином
если вы вызываете запрос непосредственно на свой файл, я думаю, вам нужно создать модуль и экспортировать его
Ответ 2
При использовании Jasmine Node вы хотите экспортировать свой объект/функцию/класс, в этом случае Color, в качестве модуля node. Мне нравится пытаться сделать мои модули работами как в node, так и в браузере, например:
Структура папки:
js
- src/
color.js
- spec/
colorSpec.js
SRC/color.js
/**
* class Color
*
* @constructor
*/
function Color(red, green, blue)
{
var current = [red, green, blue];
this.getCurrent = function ()
{
return current;
}
}
// Export node module.
if ( typeof module !== 'undefined' && module.hasOwnProperty('exports') )
{
module.exports = Color;
}
спецификации /colorSpec.js
var Color = require('../src/color.js');
describe("Test the Color object", function() {
var color = new Color(255, 255, 255);
it('to verify that it can return a color.', function() {
expect(color.getCurrent()).toContain(255);
});
});
Ответ 3
Это не то, как требуют работы. Ваш color.js
должен определить/экспортировать что-то. Я предполагаю, что вы используете require.js для здравого смысла.
color.js
define('Color', function (require) {
var Color = function () {};
return Color;
});
Затем в вашей спецификации:
var Color = require('color.js');