Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';从Node使用Jasmine的正确方法是什么?_Javascript_Node.js_Jasmine_Jasmine Node - Fatal编程技术网

Javascript 什么';从Node使用Jasmine的正确方法是什么?

Javascript 什么';从Node使用Jasmine的正确方法是什么?,javascript,node.js,jasmine,jasmine-node,Javascript,Node.js,Jasmine,Jasmine Node,经过多次黑客攻击,我终于通过Node运行了一个简单的Jasmine测试 然而,有一些奇怪的事情我不明白。。。jasmine文件导出的函数似乎需要将自身的引用传递回工作中(这适用于jasmine和ConsoleReporter) 我确信这不是正确的方法(尽管我很高兴我最终运行了一些测试:),那么有人能解释一下更好的方法吗 (注意:我对引入更多像node jasmine这样我不懂的第三方代码不感兴趣;我想了解我现在拥有的东西;不要添加更多!) 编辑:在附带的bootstrap.js中注意到了这一点

经过多次黑客攻击,我终于通过Node运行了一个简单的Jasmine测试

然而,有一些奇怪的事情我不明白。。。jasmine文件导出的函数似乎需要将自身的引用传递回工作中(这适用于jasmine和ConsoleReporter)

我确信这不是正确的方法(尽管我很高兴我最终运行了一些测试:),那么有人能解释一下更好的方法吗

(注意:我对引入更多像node jasmine这样我不懂的第三方代码不感兴趣;我想了解我现在拥有的东西;不要添加更多!)

编辑:在附带的
bootstrap.js
中注意到了这一点,它基本上是相同的(除了不同的命名)。。。所以这可能是正常的

Pivatol最近在2.0版中添加到Jasmine中,并计划发布一个官方NPM包。现在,您可以按照自己的实现从节点使用它

以下是对您编写的代码封面下发生的事情的简要解释:

jasmine=jasmine.core(jasmine)当您最初需要('jasmine')时,您将返回一个函数getJasmineRequiredObj();通过调用jasmine.core(jasmine),您可以告诉jasmine使用node
exports
语句返回其行为方法,而不是将它们添加到window.jasmineRequire对象中

jasmineConsole.console(jasmineConsole,jasmine)
jasmine分别初始化它的核心功能和它的报告程序。这句话基本上和jasmine.core(jasmine)是一样的,只适用于console reporter

还有(仍然使用jasmine 1.3,并且有一个jasmine 2.0的测试版-2015年2月)和(来自jasmine维护者自己,最新版本)


它们都可以从命令行轻松使用,不需要任何代码(当然,测试除外!)。

你是说我所做的是在浏览器之外使用它的正确方法吗?看起来很奇怪,好像我预感到了什么!我查看了节点jasmine,但它似乎包含大量代码,我不明白为什么(似乎jasmine应该支持在节点中运行,而不需要做很多工作);我不确定它是否由茉莉花的作者维护。如果这看起来不疯狂,我现在就坚持下去!节点支持似乎是2.0的新功能。我希望在1.3.x中需要所有这些额外的代码!该页面的链接看起来和我找不到的完全一样——boot.js的节点版本!我会换成那个,应该更干净!谢谢(可能值得在您的答案中添加一个指向node_suite.js的链接,以便其他人更容易找到它!)
// 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();
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.
};