什么是从节点使用茉莉花的正确方法?

经过多次黑客攻击之后,我设法通过Node运行一个简单的Jasminetesting。

然而,有一些奇怪的东西,我不明白…茉莉花文件出口函数似乎需要一个引用自己传回去工作(这是茉莉花和ConsoleReporter)。

我敢肯定,这不是正确的方法来做到这一点(虽然我很高兴,我终于做了一些testing运行:)),所以有人可以解释更好的方法来做到这一点?

(注意:我不想吸引更多的第三方代码,我不明白像茉莉花;我想明白我现在有什么;不添加更多!)

// Include stuff jasmine = require('../../../Apps/Jasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js'); jasmineConsole = require('../../../Apps/Jasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/console.js') // WHAT THE? I DON'T EVEN KNOW WHAT THIS MEANS jasmine = jasmine.core(jasmine); jasmineConsole.console(jasmineConsole, jasmine) // Set up the console logger jasmine.getEnv().addReporter(new jasmine.ConsoleReporter({ print: console.log })); // Create some global functions to avoid putting jasmine.getEnv() everywhere describe = jasmine.getEnv().describe; it = jasmine.getEnv().it; expect = jasmine.getEnv().expect; // Dummy tests describe("A suite", function() { it("contains spec with an expectation", function() { expect(true).toBe(true); }); it("contains spec with a failing expectation", function() { expect(true).toBe(false); }); }); // Kick off execution jasmine.getEnv().execute(); 

茉莉花“工作”

编辑:注意到在运送的bootstrap.js ,这是基本相同(除了不同的命名)…所以,也许这是正常的?!

这不只是我做疯子的东西!

Pivatol最近在2.0中增加了对Jasmine的更好的node.js支持 ,并计划发布官方的NPM包。 现在,您可以通过在自己的节点testing套件中使用的实现来使用它。

以下是对您所写的代码的封面内容进行的简要说明:

jasmine = jasmine.core(jasmine); 当你最初需要('茉莉')你回来一个单一的function,getJasmineRequiredObj(); 通过调用jasmine.core(jasmine),你可以告诉jasmine使用node exports语句返回行为方法,而不是将它们添加到window.jasmineRequire对象中。

https://github.com/pivotal/jasmine/blob/master/src/core/requireCore.js

 function getJasmineRequireObj() { if (typeof module !== 'undefined' && module.exports) { return exports; } else { window.jasmineRequire = window.jasmineRequire || {}; return window.jasmineRequire; } } // jRequire is window.jasmineRequire in a browser or exports in node. getJasmineRequireObj().core = function(jRequire) { var j$ = {}; jRequire.base(j$); j$.util = jRequire.util(); j$.Any = jRequire.Any(); ... return j$; // here is our jasmine object with all the functions we want. }; 

jasmineConsole.console(jasmineConsole, jasmine) Jasmine将它的核心function与记者分开初始化。 这个声明本质上与jasmine.core(茉莉花)只有控制台记者是一样的。

https://github.com/pivotal/jasmine/blob/master/src/console/requireConsole.js

还有茉莉花节点 (仍然使用茉莉花1.3,并有茉莉花2.0testing版 – 2015年2月)和茉莉花NPM (从茉莉花维护者本身,与最新版本)。

它们都可以从命令行轻松使用,不需要代码(当然除了testing!)。