Articles of 摩卡

Stubbing S3在Node.js中上传

我将如何去在S3中上传Node.js中的S3上传文件? 对于洞察力,我使用摩卡进行testing,Sinon进行testing,但我愿意改变任何事情。 我有一个文件,导出执行上传的函数。 它看起来像这样: var AWS = require('aws-sdk'); var s3 = new AWS.S3({ params: { Bucket: process.env.S3_BUCKET }}); var params = { Key: key, Body: body }; s3.upload(params, function (error, data) { // Handle upload or error }); 如果我尝试存根AWS.S3或AWS.S3.prototype ,没有任何更改。 我认为这是因为我的testing需要aws-sdk自己,并有自己的每个函数的副本。 我的testing看起来像这样: describe('POST /files', function () { var url = baseURL + '/files'; it('uploads the […]

错误使用`应该`testingnodeJS应用程序(undefined不是一个函数)

我想使用摩卡testing和REST API,所以我有以下代码来testing创build操作: 'use strict'; var should = require('should'); var assert = require('assert'); var request = require('supertest'); var winston = require('winston'); describe('Routing', function() { describe('asset', function() { it('Crear un nuevo activo en la base de datos y retornarlo', function(done) { var asset = { "description" : "Computador portatil", "maker" : "Lenovo", "module" : "Y410", "serialNumber" : […]

没有请求身体在招摇testing

经过漫长的search之后,我终于发现swagger-test是从swagger spec中testing我的REST服务的最佳框架。 我跟着读了我和回购的例子。 这是我的第一个请求/响应对。 "x-amples": [{ "description": "should save an object", "request": { "params": { "app_id": "bengi", "table_name": "Student", "body": { "collectionName": "Student", "key": "mLiJB380x9893rjlaf0" } } }, "response": { "status": 200, "headers": { "content-type": "application/json" } }}] app_id和table_name在url中被很好地替代。 我的问题是参数body永远不会包含在http请求中。 我知道这是因为我检查了wireshark的stream量。 我很确定我的规格非常好,因为我已经从Swagger-UI手动运行成功的testing。 这里是我的控制台的屏幕截图: 这意味着我的请求是未经授权的,因为缺less上面请求body中的key参数。 这是我的mocha调用的js.js文件: var swaggerTest = require('swagger-test'); var fs = require('fs'); var preq […]

如何在testing过程中手动触发一个net.socket错误事件

我使用Node.js编写了一个TCP服务器,并在我的testing中(使用Mocha)testing了服务器实际发出的所有事件。 我发现的一个问题是,我不能随意触发错误事件,所以我不能自动执行这个testing。 socket.on('error', function() { // How do I test this? }); 有没有办法手动触发这个事件? O可能制造一个腐败的数据包?

在使用承诺调用方法的方法的摩卡testing环境中无法调用sinon间谍

我有一个模块,调用一个使用蓝鸟承诺的方法。 这里是简化的模块。 卡桑德拉只是一些数据库调用的包装, var Cassandra = require('../lib/cassandraObject'); var cassandra = new Cassandra(); exports.doIt = function _doIt(req, res) { cassandra.queryPromise("query", [1, 2, 3]) .then(function (results) { res.sendStatus(200); }) .catch(function(er) { res.sendStatus(500); }) } 我试图用sin和蓝鸟来testing。 我将存储卡桑德拉的查询承诺的存根,我res.sendStatus间谍: it("makes a call to doIt", function () { var qpMock = sinon.stub(Cassandra.prototype, "queryPromise").resolves(['yay!']); var req = {}; var res = { […]

摩卡/ Should.js使用asynchronousfunction

我是JavaScripttesting框架的新手。 我想做一点优化,但遇到一些问题。 该项目正在使用should.js 这里是我原来的testing用例的简化版本: describe('Simple', function() { describe('Test', function() { it('should do something', function(done) { somePromise.then(function(data) { data.should.above(100); done(); }); } it('should do something else but alike', function(done) { somePromise.then(function(data) { data.should.above(100); done(); }); } } }); 我试图这样做: var testFunc = function(data) { it('should do something', function(done) { data.should.above(100); done(); }); } describe('Simple', function() { […]

有没有更好的方式在摩卡书写testing语句?

在下面的代码中,我试图确保在用户单击链接之后呈现某个页面。 我不知道这是否是正确的方式来做出这个断言,或者如果有更好的方法来写它,也许与另一个内在的声明。 这个testing能以任何方式改进吗? describe('User visits the main page and clicks the Contact link', function() { const browser = new Browser(); it('should render ok', function(done) { browser.visit( "http://localhost:3000", function() { browser.clickLink("Contact", function() { browser.assert.text('title', 'Contact'); done(); }); }); }); });

摩卡咖啡unit testing中的error handling

我有摩卡testing。 我会尽可能简化。 我想知道我应该如何处理摩卡testing中的错误。 例如,如果getName中有错误,我该怎么办? 我怎样才能抛出一个错误? 或者我应该使用done(error)作为; it('trial', function(done) { getName(function (name, err) { if(err){ done(err); //what should I do here? }else{ console.log(name); } }); });

柴应该是不确定的

我已经安装了摩卡和柴。 在我的unit testing中: import {expect, should} from "chai"; describe("array", function () { it("has length of 1", function (done) { var arr = ["B"]; expect(arr).have.lengthOf(1); arr.should.have.lengthOf(1); }); }); expect按预期工作,但should是不确定的。 为什么?

用Mocha和SinontestingMailgun .send()方法

我正在尝试编写一个快速中间件函数的unit testing,通过ping Mailgun API来发送电子邮件。 module.exports = { sendEmail: function (req, res) { let reqBody = req.body; let to = reqBody.to; let from = reqBody.from; let subject = reqBody.subject; let emailBody = reqBody.body; let data = { from: from, to: to, subject: subject, text: emailBody }; mailgun.messages().send(data, function (error, body) { if (error) { res.status(400).json(error); return; […]