草庐IT

arrays - 比较 chai 中的数组

我正在使用chai和chai-as-promised(以及更多框架,但在这种情况下无关紧要)编写一些测试,我需要检查我从网页获得的数组是否与预定义的数组。我尝试使用expect(arrayFromPage).to.eventually.deep.equal(predefinedArray),但它不起作用,因为页面上元素的顺序有时不同(这没关系,我不'不需要检查它们是否在相同的顺序)。我找到了一种通过使用expect(listFromPage).to.eventually.include.all.members(predefinedArray)来解决此问题的方法,但我想知道是否有更好的解

node.js - express 中间件测试 mocha chai

有没有办法在express中测试这些中间件:module.exports=functionlogMatchingUrls(pattern){returnfunction(req,res,next){if(pattern.test(req.url)){console.log('requesturl',req.url);req.didSomething=true;}next();}}我发现的唯一中间件测试是:module.exports=function(request,response,next){/**DosomethingtoREQUESTorRESPONSE**/if(!reque

node.js - 使用 Mocha/Chai 和 async/await 验证是否引发了异常

我正在努力寻找在使用async/await时验证promise在Mocha测试中被拒绝的最佳方法。这是一个可行的示例,但我不喜欢should.be.rejectedWith返回一个需要从测试函数返回才能正确评估的promise。使用async/await消除了测试值的这种要求(就像我对下面wins()的结果所做的那样),我觉得我很可能会在某个时候忘记return语句,在在这种情况下测试将始终通过。//Alwayssucceedsfunctionwins(){returnnewPromise(function(resolve,reject){resolve('Winner');});}/

node.js - 通过 Chai 发布请求

我正在尝试向接受post/put调用的NodeJS服务器发出请求。我试图通过chai通过post调用发送的参数在服务器(req.body.myparam)上不可见。我尝试了以下发布请求,但没有结果:-varhost="http://localhost:3000";varpath="/myPath";chai.request(host).post(path).field('myparam','test').end(function(error,response,body){和chai.request(host).post(path).send({'myparam':'test'}).en

javascript - 使用 Chai.js 测试失败

在JUnit中,您可以通过以下方式使测试失败:fail("Exceptionnotthrown");使用Chai.js实现相同目标的最佳方法是什么? 最佳答案 有assert.fail().你可以这样使用它:assert.fail(0,1,'Exceptionnotthrown'); 关于javascript-使用Chai.js测试失败,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

javascript - 使用 mocha/chai 进行测试时收到 UnhandledPromiseRejectionWarning

所以,我正在测试一个依赖于事件发射器的组件。为此,我想出了一个使用Promises和Mocha+Chai的解决方案:it('shouldtransitionwiththecorrectevent',(done)=>{constcFSM=newCharacterFSM({},emitter,transitions);lettimeout=null;letresolved=false;newPromise((resolve,reject)=>{emitter.once('action',resolve);emitter.emit('done',{});timeout=setTimeout(

node.js - 如何使用 mocha 和 chai 正确测试 Promise?

以下测试表现异常:it('Shouldreturntheexchangeratesforbtc_ltc',function(done){varpair='btc_ltc';shapeshift.getRate(pair).then(function(data){expect(data.pair).to.equal(pair);expect(data.rate).to.have.length(400);done();}).catch(function(err){//thisshouldreallybe`.catch`forafailedrequest,but//insteaditlook

node.js - chai 测试数组相等不能按预期工作

为什么下面会失败?expect([0,0]).to.equal([0,0]);什么是正确的测试方法? 最佳答案 对于expect,.equal将比较对象而不是它们的数据,在您的情况下它是两个不同的数组。使用.eql来深入比较值。看看这个link.或者您可以使用.deep.equal来模拟与.eql相同的情况。或者在您的情况下,您可能想要check.members.对于asserts,您可以使用.deepEqual,link. 关于node.js-chai测试数组相等不能按预期工作,我们在

javascript - 如何为 chai-http 导出 node express 应用程序

我有一个带有几个端点的express应用程序,目前正在使用mocha、chai和chai-http对其进行测试。在我为池化mongo连接添加逻辑并开始构建依赖于数据库连接的端点之前,这一切正常。基本上,在我导入我的API路由并启动应用程序之前,我想确保我已连接到mongo。我的问题是我无法理解如何为chai-http导出我的应用程序,但还要确保在测试任何端点之前存在数据库连接。在这里,我连接到mongo,然后在回调中应用我的API并启动应用程序。这个例子的问题是我的测试将在连接到数据库之前开始,并且在定义任何端点之前。我可以将app.listen和api(app)移到MongoPool

javascript - Chai 中的 “assert” 、 “expect” 和 “should” 有什么区别?

assert、expect和should有什么区别?什么时候用什么?assert.equal(3,'3','==coercesvaluestostrings');varfoo='bar';expect(foo).to.equal('bar');foo.should.equal('bar'); 最佳答案 区别是documentedthere.这三个接口(interface)呈现不同风格的执行断言。最终,他们执行相同的任务。一些用户更喜欢一种风格而不是另一种风格。话虽如此,还有一些技术考虑值得强调:assert和expect接口(int