我在zsh中通过npm 安装誓言时遇到了一些问题.这就是我得到的.我尝试使用和不使用-g选项安装它.你知道这里有什么问题吗?
[? ~/Desktop/sauce-node-demo:master] npm install -g vows
npm http GET https://registry.npmjs.org/vows
npm http 304 https://registry.npmjs.org/vows
npm http GET https://registry.npmjs.org/eyes
npm http GET https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/eyes
npm http 304 https://registry.npmjs.org/diff
/usr/local/share/npm/bin/vows -> /usr/local/share/npm/lib/node_modules/vows/bin/vows
vows@0.6.4 /usr/local/share/npm/lib/node_modules/vows
??? eyes@0.1.8
??? diff@1.0.3
[? ~/Desktop/sauce-node-demo:master] vows
zsh: command not found: vows
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用Node.jsfelixge的node-mysql客户端.我没有使用ORM.
我正在测试Vows并希望能够模拟我的数据库,可能使用Sinon.由于我本身并没有真正的DAL(除了node-mysql),我不确定如何解决这个问题.我的模型大多是简单的CRUD,有很多吸气剂.
有关如何实现这一目标的任何想法?
我花了一些时间在NodeJS测试套件中调试一个奇怪的无限循环问题.它只在罕见的条件下发生,但我可以在附加到chrome调试器时重现它.
我认为它与V8处理异常中的堆栈跟踪以及vows库对AssertionError对象所做的扩展(vows添加了一个toString方法)有关.我也错了,所以我想问一下我对V8实现的理解是否正确.
这是重现错误的最小示例:
$ git clone https://github.com/flatiron/vows.git
$ cd vows && npm install && npm install should
$ cat > example.js
var should = require('should');
var error = require('./lib/assert/error.js');
try {
'x'.should.be.json;
} catch (e) {
console.log(e.toString());
}
// without debug, it should fail as expected
$ node example.js
expected 'x' to have property 'headers' // should.js:61
// now with debug
$ node-inspector &
$ node --debug-brk example.js
// 1) …Run Code Online (Sandbox Code Playgroud) 我有一个快速服务器,我正在使用誓言进行测试.我想从誓言测试套件中运行服务器,这样我就不需要让它在后台运行以使测试套件工作,然后我就可以创建一个运行服务器并测试它的蛋糕任务隔离.
在server.coffee我创建了(快递)服务器,配置它,设置路线和所谓app.listen(端口)是这样的:
# Express - setup
express = require 'express'
app = module.exports = express.createServer()
# Express - configure and set up routes
app.configure ->
app.set 'views', etc....
....
# Express - start
app.listen 3030
Run Code Online (Sandbox Code Playgroud)
在我的简单中routes-test.js我有:
vows = require('vows'),
assert = require('assert'),
server = require('../app/server/server');
// Create a Test Suite
vows.describe('routes').addBatch({
'GET /' : respondsWith(200),
'GET /401' : respondsWith(401),
'GET /403' : respondsWith(403),
'GET /404' : respondsWith(404),
'GET /500' : respondsWith(500),
'GET /501' : respondsWith(501)
}).export(module); …Run Code Online (Sandbox Code Playgroud) 我正在尝试决定是否从Vows切换到Mocha以获取大型Node应用程序.
我几乎享受了所有誓言的体验 - 但是这个论点传递只有一些奇怪的地方.我总是不得不抓住我的头脑来记住主题是如何工作的,这会干扰编写测试的基础知识.在深度嵌套的异步测试中尤其有问题.虽然我发现将Vows与async.js结合起来可以帮助一点.
所以Mocha的报道似乎更灵活.我喜欢选择测试风格的自由,重要的是它也可以在浏览器中运行,这将非常有用.但我担心它仍然无法解决深层嵌套异步测试的可读性问题.
有没有人有任何实用的建议 - 摩卡可以让深层嵌套测试可读吗?我错过了什么吗?
我正在使用Vows.js来测试一些在数据库中创建记录的node.js.因此,它在数据库中创建了一些测试记录.我想在测试运行后删除这些记录.有没有办法在Vows中运行一批测试时运行清理功能?
我真的可以做一些关于测试我在node.js中创建的RESTful api的建议.那里有太多的框架,我很茫然.我的测试知识一般不够好,这就是我试图编写这些测试的原因.我已经尝试了vows.js这看起来不错,但我无法弄清楚如何合并我的API的测试,我需要某种客户端.我需要一个简单的测试登录系统的帖子的例子.
我正在玩耍并通过个人项目了解誓言.这是一个小型客户端库,在誓言中完成测试.因此,我必须构建并测试一个这样写的文件:
(function(exports) {
var module = export.module = { "version":"0.0.1" };
//more stuff
})(this);
Run Code Online (Sandbox Code Playgroud)
在我的测试中(基于science.js,d3等)需要这样的模块:
require("../module");
Run Code Online (Sandbox Code Playgroud)
在尝试运行测试时,我继续得到"模块未定义错误",所以我去了一个repl并运行:
require("../module")
Run Code Online (Sandbox Code Playgroud)
它返回了:
{ module: { version: "0.0.1" } }
Run Code Online (Sandbox Code Playgroud)
我意识到我可以这样做:
var module = require("../module").module;
Run Code Online (Sandbox Code Playgroud)
但感觉就像我通过这种方式创建一个问题,特别是因为我基于这个项目的库是以我描述的格式进行的.
我希望我的项目行为类似于我基于它的那些项目,其中:
require("../module");
Run Code Online (Sandbox Code Playgroud)
在此命名空间中创建变量:
module.version; //is valid.
Run Code Online (Sandbox Code Playgroud)
我已经在各种库中看到了这一点,我正在遵循T的格式和思考过程,但我相信我可能会遗漏一些我不知道的需求行为.
有谁知道如何测试Mongoose Validations?
例如,我有以下Schema(作为示例):
var UserAccount = new Schema({
user_name : { type: String, required: true, lowercase: true, trim: true, index: { unique: true }, validate: [ validateEmail, "Email is not a valid email."] },
password : { type: String, required: true },
date_created : { type: Date, required: true, default: Date.now }
});
Run Code Online (Sandbox Code Playgroud)
该validateEmail方法被定义为这样的:
// Email Validator
function validateEmail (val) {
return /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(val);
}
Run Code Online (Sandbox Code Playgroud)
我想测试验证.最终的结果是我希望能够测试验证并根据发生的事情,然后我可以编写其他测试来测试这些代码片段之间的交互.示例:用户尝试使用与所用用户名相同的用户名进行注册(电子邮件已在使用中).我需要一个我可以实际拦截的测试,或者看到验证工作没有达到DB.我不想在这些测试中击中Mongo.这些应该是UNIT测试而不是集成测试.:)
谢谢!
Vows有一个run()方法,它在节点下运行测试,而不使用该vows命令.
在https://github.com/cloudhead/vows/blob/master/lib/vows/suite.js,我们可以看到此方法采用了一个选项参数,该参数允许指定默认值以外的报告者:
this.run = function (options, callback) {
var that = this, start;
options = options || {};
for (var k in options) { this.options[k] = options[k] }
this.matcher = this.options.matcher || this.matcher;
this.reporter = this.options.reporter || this.reporter;
Run Code Online (Sandbox Code Playgroud)
应该在选项对象中传递什么值以选择不同的报告者,例如spec记者?
我从我的应用程序的根文件夹运行我的测试.测试位于spec目录中.
$ vows
No command 'vows' found, did you mean:
Command 'vos' from package 'openafs-client' (universe)
Command 'voms' from package 'voms-server' (universe)
vows: command not found
Run Code Online (Sandbox Code Playgroud)
我的package.json如下
{
"author": "Sunil Kumar <sunilkumar.gec56@gmail.com>",
"name": "subscription-engine-processor",
"description": "Node.js server for Subscription Engine processor application.",
"version": "0.0.0",
"scripts": {
"start": "node index.js"
},
"repository": {
"type": "git",
"url": ""
},
"main": "./index",
"engines": {
"node": "~0.6.6"
},
"dependencies": {
"buffers": "0.1.1",
"redis": "0.7.1"
},
"devDependencies": {
"vows": "0.6.x"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经完成了npm install,因此我的node_modules /目录中已经安装了包含誓言的依赖模块. …