Tag: chai

比较function结果与API中的柴?

我对JavaScript非常陌生,我已经创build了一个Node模块,但是我想用Mocha和Chai来添加一些testing。 我的节点模块返回TVmaze API的结果。 该模块被称为tvmaze-node,可通过NPM使用。 例如,以下内容将返回http://api.tvmaze.com/search/shows?q=girls的结果 pullRequest: function(url, donePulledRequest) { request(url, function(error, response, body){ if(error || response.statusCode === 404 || body.length == 2) { donePulledRequest(error || 'No results'); } else { donePulledRequest(null, JSON.parse(body)); } }); }, search: function(show, doneShow){ var url = "http://api.tvmaze.com/search/shows?q=" + show; module.exports.pullRequest(url, doneShow) }, 我想在Chai中做的是确保search结果匹配从URL返回的json。 我有柴的结构,但不能从我的生活中找出逻辑。 出于某种原因,我得到的错误: Uncaught AssertionError:expected [Array(10)] to deep […]

柴:我如何检查exception属性

考虑下面的一段代码: var expect = require('chai').expect; parse = function() { throw {error: 'PROTOCOL_ERROR'} } describe('parser', function() { it('throw error on unfinished command', function() { try { parse("*2\r\n$4\r\necho\r\n$11\r\nhel") } catch (e) { expect(e).to.equal({error: 'PROTOCOL_ERROR'}) } }) }); 有没有办法避免这种try…catch在代码中try…catch样板? 柴有'扔'的方法,但它只提供了一个检查的instanceof

抑制柴中的日志输出

我目前正在使用chai和chai-http来testing节点应用程序的一些HTTP响应。 我chai.request(…)的问题是每次使用chai.request(…)都会将服务器响应状态和时间logging到控制台。 反过来,这使得它成为与xunit摩卡testing输出文件的方式,并导致我的CI解决scheme打破。 testing的一个例子是: chai.request(server) .get('/') .end(function(err, res){ expect(res).to.have.status(200); expect(res.text).to.have.string("Maintenance"); done(); }); 日志: GET / 200 17.807 ms – 305 你会build议如何抑制柴的伐木?

找不到名称“模块”

我想运行一个简单的打字稿文件,我正在导出一个名为sum的函数,如下所示: 我正在编写节点脚本。 function sum(a:number):number{ return a; } module.exports.sum=sum; 我不明白我做错了什么。 我写了这个简单的脚本来理解unit testing用例。 我想如果这个文件运行正常,那么我会去使用摩卡和柴启动基本的testing用例。 以下是我的testing代码: "use strict" // Import chai. let chai = require('chai'), path = require('path'); chai.should(); let SampleTest = require(path.join(__dirname, '..', 'sample.js')); describe('Sampletesting', () => { describe('function sum', function(){ it('should return number', function(){ sum(1).should.equal(1); }) }) });

节点js做方法链的testing存根

我的function是sendMail我想存根functionmailjet,它有一个方法链mailjet.post('发送')。请求… 我想断言callback被称为邮件成功或失败。 那么我如何存根这个方法链? var sendMail = function (templateName, callback) { // From template name find template id of mailjet mailingExternalTemplateModel.findMailingTemplateId(templateName, function (err, result) { const request = mailjet .post("send") .request(params) request .then((result) => { if (typeof callback === 'function') { callback(null, result.body); } }) .catch((err) => { if (typeof callback === 'function') { callback(err, null); […]

testing节点,摩卡和柴(应/ bdd语法)

上下文 我是一个JavaScript的爱好者,并把我的项目到一个新的水平,我试图在BitBucket中设置一个pipe道,将运行我的unit testing(和稍后做其他事情)。 我已经使用Mocha和Chai进行testing,但是我在浏览器中使用了一个设置依赖关系并运行testing的html页面。 问题 我面临的问题是,我不能让should语法在节点中工作,而我之前在浏览器中已经有工作testing。 should作为柴图书馆的一部分。 我使用最less的代码初始化了一个新的项目,但是在这里它也不起作用: should简单地不分配。 package.json ,包括摩卡和柴,并build立摩卡进行testing。 { "name": "testtest", "version": "1.0.0", "description": "Minimal, complete and verifiable example", "main": "index.js", "dependencies": {}, "devDependencies": { "chai": "^4.0.1", "mocha": "^3.4.2" }, "scripts": { "test": "mocha -u bdd" }, "author": "GolezTrol", "license": "ISC" } test / test-foo.js ,包含testing。 我添加的唯一的东西是require的第一行。 之前,浏览器包含了这个文件,Foo是全球的。 我回应道,给了我5个口,应该给我不明确的。 var Foo = […]

摩卡chai-http响应总是返回null

我正在通过mocha chai-httptestingNode.js中的服务器响应。 我得到的回应始终为空 。 但是,当我没有摩卡testing亚军定期运行请求,一切都很好。 这是服务器的代码: var Babble = { messages: new Array() , users: new Array(),userCount:0 }; // var http = require('http'); var urlUtil = require('url'); var queryUtil = require('querystring'); var Babble = { messages: new Array() , users: new Array(),userCount:0 }; // Data object to save all chat logs var server = http.createServer(function(request, […]

每次testing之前都无法获得所需的文件

我尝试将咖啡与咖啡和柴混合使用。 在包含testing的每个文件之前,我想包含以下文件: testing/ _helper.coffee path = require 'path' AppDir = path.resolve("#{__dirname}/../src/app") chai = require('chai') should = chai.should() factories = require('chai-factories') chai.use(factories) 这样我才能访问AppDirvariables。 所以当我想要一个文件时,我不需要指定app目录的完整path。 testing/应用程序/ setup-test.coffee describe 'Setup instance', -> it 'should be a object', -> setup = require "#{AppDir}/setup" setup.should.be.a('object') 我尝试了以下设置: 添加_hellper.coffee摩卡命令行选项,如下所示: ./node_modules/.bin/mocha –require coffee-script –require test/_helper.coffee –compilers coffee:coffee-script –recursive –reporter spec test 所以: ./node_modules/.bin/mocha […]

使用Mocha和Chai编写testing用例,以便使用Error

我有一个简单的函数: var moment = require('moment-timezone'); exports.splitIntoDays = function(from,to) { var timeIntervals = []; var interval = {}; var start = moment(from); var end = moment(to); if(start.isAfter(end)) { throw new Error('From date ('+from+') is after To date ('+to+').Enter a valid date range.'); } var initial = start; console.log("Before loop"+initial.format("YYYY/MM/DD-HH:mm:ss")+" "+initial.diff(end,'hours')); while(end.diff(initial,'hours') > 24) { timeIntervals.push({"from" : […]

向Chai / Mocha提供应包含的部分密钥列表

看来,如果我这样做 describe( 'Add Youtube', function () { it( 'should return the video data, including user, title and content fields', function ( done ) { this.timeout( 5000 ) request({ method: 'POST', url: 'https://localhost:8443/api/add', json: true, strictSSL: false, body: { "type": "youtube", "url": "https://www.youtube.com/watch?v=uxfRLNiSikM" }, headers: { "Authorization": "Bearer " + newTestUser.token } }, function ( err, […]