Karma无法识别JSFileSpec.js文件中的'require'语句.运行karma.conf.js:
(function() {
describe("DummyEmitter creation", function(){
return it("creation", function(){
var DummyEmitter = require('Util.DummyEmitter');
var dummy = new DummyEmitter('someName');
return expect(dummy).toBeDefined();
});
});
})();
Run Code Online (Sandbox Code Playgroud)
ReferenceError:未定义require
如何从命令行在Node.js上运行Jasmine测试?我已经通过npm安装了jasmine-node并编写了一些测试.我想在spec目录中运行测试并在终端中获得结果,这可能吗?
我有一个由jasmine-node在一个名为的文件中运行的以下测试代码 bob_test.spec.js
require('./bob');
describe("Bob", function() {
var bob = new Bob();
it("stating something", function() {
var result = bob.hey('Tom-ay-to, tom-aaaah-to.');
expect(result).toEqual('Whatever');
});
});
Run Code Online (Sandbox Code Playgroud)
为了使测试通过,我在一个名为的文件中编写了以下生产代码 bob.js
"use strict";
var Bob = function() {
}
Bob.prototype.hey = function (text) {
return "Whatever";
}
module.exports = Bob;
Run Code Online (Sandbox Code Playgroud)
当我运行测试 - 使用jasmine-node .- 我得到以下F
Failures:
1) Bob encountered a declaration exception
Message:
ReferenceError: Bob is not defined
Stacktrace:
ReferenceError: Bob is not defined
at null.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:4:17)
at Object.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:3:1)
at Module._compile (module.js:456:26)
at …Run Code Online (Sandbox Code Playgroud) 我希望这会说"1次测试",但它会说"0次测试".知道为什么吗?这是在OS X上.
$ jasmine-node --verbose my.spec.js
undefined
Finished in 0.001 seconds
0 tests, 0 assertions, 0 failures, 0 skipped
$ cat my.spec.js
describe("bar", function() {
it("works", function() {
expect("foo").toEqual("foo");
});
});
$ jasmine-node --version
1.11.0
$ npm --version
1.3.5
$ node -v
v0.4.12
Run Code Online (Sandbox Code Playgroud)
即使我尝试创建语法错误,我得到相同的输出:
$ cat my.spec.js
it(
$ jasmine-node --verbose --captureExceptions my.spec.js
undefined
Finished in 0.001 seconds
0 tests, 0 assertions, 0 failures, 0 skipped
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试指定一个不存在的文件,它会抱怨:
$ jasmine-node no.spec.js
File: /tmp/no.spec.js is missing.
Run Code Online (Sandbox Code Playgroud) 我正在尝试让travis-ci用jasmine-node测试我的nodejs模块.当我从命令行运行测试时,它们都会通过,但无论出于何种原因,Travis总是报告我的构建失败.我的.travis.yml看起来像这样:
language: node_js
node_js:
- 0.6
- 0.8
Run Code Online (Sandbox Code Playgroud)
我的package.json看起来像这样:
"scripts": {
"test": "jasmine-node tests/*.spec.js"
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将一个before_script添加到我的travis.yml中
language: node_js
node_js:
- 0.6
- 0.8
before_script:
- "sudo npm i -g jasmine-node"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个具有a main-process.js和a 的Node.js应用程序child-process.js.
该main-process.js如下所示:
var childProcess = require('child_process');
var job = childProcess.spawn('node', ["child-process.js"], {
detached = true,
stdio: ['ipc']
});
Run Code Online (Sandbox Code Playgroud)
我child-process.js做了一些任务并通知父进程有关其状态,它使用:
exports.init = function() {
//some processing here
process.send({status: 'success or pending'});
}
Run Code Online (Sandbox Code Playgroud)
现在我想child-process.js使用jasmine-node进行单元测试,但是当我init()从规范中调用方法时,jasmine-node会抛出一个错误:
TypeError: Object #<process> has no method 'send'
Run Code Online (Sandbox Code Playgroud)
有没有办法模拟process变量?换句话说,我该如何对这种情况进行单元测试?
我试图使用方法beforeAll和毕竟茉莉,打造一套与测试frisby.js,因为实际上,弗里斯比没有此方法的支持.所以,这就是我要做的事情:
var frisby = require('frisby');
describe("setUp and tearDown", function(){
beforeAll(function(){
console.log("test beforeAll");
});
afterAll(function(){
console.log("afterAll");
});
//FRISBY TESTS
}); //end of describe function
Run Code Online (Sandbox Code Playgroud)
如果我将before/afterAll之前的方法更改为before/afterEach,则可以正常工作,但是当我使用before/afterAll时,控制台上会出现此错误:
消息:ReferenceError:未定义beforeAll Stacktrace:ReferenceError:未定义beforeAll
我的项目上安装了jasmine版本2.3.2,所以,我不知道我需要做什么来集成这个方法.
我通过运行全局安装了茉莉花npm install jasmine -g.
跑步jasmine -v给了我
jasmine v2.5.0
jasmine-core v2.5.0
Run Code Online (Sandbox Code Playgroud)
然后我按照文档运行
jasmine init
jasmine examples
Run Code Online (Sandbox Code Playgroud)
这创建了预期的/spec目录和spec/support/jasmine.json文件.
我的印象是,如果我现在运行,jasmine我应该在控制台中看到一些测试输出.相反,它只是暂时考虑它,然后什么都不做.
我在Git Bash终端的Windows 7计算机上运行节点v4.5.0.我也试过从Windows cmd提示符运行它,但这也不起作用.
我正在使用jasmine-node测试节点服务器中API端点后面的控制器逻辑.以下是此控制器逻辑通常的样子:
var getSummary = function(req, res) {
var playerId = req.params.playerId;
db.players.getAccountSummary(playerId, function(err, summary) {
if (err) {
logger.warn('Error while retrieving summary for player %d.', playerId, err);
return res.status(500).json({
message: err.message || 'Error while retrieving summary.',
success: false
});
} else {
res.json({success: true, summary: summary});
}
});
};
Run Code Online (Sandbox Code Playgroud)
以下是我成功测试else块的方法:
describe('GET /api/players/:playerId/summary', function() {
it('should return an object summarizing the player account', function(done) {
request
.get('/api/players/' + playerId + '/summary')
.set('Content-Type', 'application/json')
.set('cookie', cookie)
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, …Run Code Online (Sandbox Code Playgroud) 经过多次黑客攻击后,我设法通过Node运行简单的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", …Run Code Online (Sandbox Code Playgroud) jasmine-node ×10
node.js ×8
jasmine ×7
javascript ×7
frisby.js ×1
karma-runner ×1
testing ×1
travis-ci ×1
unit-testing ×1