Lan*_*opp 23 javascript bdd jasmine
我有一个简单的JavaScript文件,color.js和匹配的spec文件colorSpec.js.
color.js:
function Color()
{
}
Run Code Online (Sandbox Code Playgroud)
colorSpec.js:
require('./color.js');
describe("color", function() {
it("should work", function() {
new Color(255, 255, 255);
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行时jasmine-node colorSpec.js,我得到以下异常:
ReferenceError: Color is not defined
Run Code Online (Sandbox Code Playgroud)
如何color.js在运行之前让Jasmine加载我的文件colorSpec.js?
b01*_*b01 19
使用Jasmine Node时,您需要将对象/函数/类(在本例中为Color)导出为节点模块.我喜欢尝试让我的模块在节点或浏览器中工作,如下所示:
文件夹结构:
js
- src/
color.js
- spec/
colorSpec.js
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
投机/ 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);
});
});
Run Code Online (Sandbox Code Playgroud)
mpm*_*mpm 16
你可以使用require()在colorSpec.js中加载color.js. 我没看到茉莉如何能够猜测所有的依赖关系而不告诉茉莉花你的spec文件中究竟是什么.编辑:一个快速而肮脏的解决方案,但也许有一些内置的Jasmine可以做到这一点:
fs = require('fs')
myCode = fs.readFileSync('./color.js','utf-8') // depends on the file encoding
eval(myCode)
Run Code Online (Sandbox Code Playgroud)
然后你的班级应该有茉莉花
如果您直接在您的文件上调用require,我认为您需要创建一个模块并将其导出
这不是需要工作的方式.您color.js需要定义/导出某些内容.我假设你在这里使用require.js来保持理智.
color.js
define('Color', function (require) {
var Color = function () {};
return Color;
});
Run Code Online (Sandbox Code Playgroud)
然后在你的规范中:
var Color = require('color.js');
Run Code Online (Sandbox Code Playgroud)