gpt4 book ai didi

javascript - 从 Node 使用 Jasmine 的正确方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:25:34 25 4
gpt4 key购买 nike

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

但是,有一些奇怪的东西我不明白...... jasmine 文件导出函数似乎需要一个对自身的引用才能传回工作(这适用于 Jasmine 和 ConsoleReporter)。

我确定这不是正确的方法(尽管我很高兴我终于进行了一些测试:)),所以有人可以解释一下更好的方法吗?

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

// 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();

Jasmine "working"

编辑:在发货的bootstrap.js中注意到了这一点,基本上是一样的(除了命名不同)...所以也许这是正常的?!

It's not just me doing bonkers stuff!

最佳答案

Pivatol 最近添加了 better node.js support到 Jasmine 2.0 并计划发布官方 NPM 包。现在,您可以按照他们自己的 node test suite 中使用的实现从 Node 使用它。 .

以下是对您编写的代码的幕后情况的简要说明:

jasmine = jasmine.core(jasmine); 当你最初的 require('jasmine') 得到一个函数时,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 将其核心函数与它的报告器分开初始化。该语句与 jasmine.core(jasmine) 基本相同,仅用于控制台报告器。

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

关于javascript - 从 Node 使用 Jasmine 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com