単純なJavaScriptファイルcolor.js
と、対応するスペックファイル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
ファイルをロードするにはどうすればよいですか?
require()でcolorSpec.jsにcolor.jsをロードできます。 jasmineにスペックファイルの内容を正確に伝えない限り、jasmineがすべての依存関係を推測できる方法はわかりません。編集:迅速で汚い解決策ですが、それを行うための組み込みのジャスミンがあるかもしれません:
fs = require('fs')
myCode = fs.readFileSync('./color.js','utf-8') // depends on the file encoding
eval(myCode)
あなたのクラスはジャスミンで利用できるはずです
ファイルに直接requireを呼び出すと、モジュールを作成してエクスポートする必要があると思います
Jasmine Nodeを使用するときは、オブジェクト/関数/クラス(この場合はColor)をノードモジュールとしてエクスポートします。私はモジュールをノードとブラウザの両方で機能させるようにして、次のようにします。
フォルダ構造:
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;
}
spec/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);
});
});
これはrequireがどのように機能するかではありません。きみの color.js
何かを定義/エクスポートする必要があります。ここでは、正気のためにrequire.jsを使用すると想定します。
color.js
define('Color', function (require) {
var Color = function () {};
return Color;
});
次に、仕様で:
var Color = require('color.js');