【问题标题】:Error unit tests using (mocha , chai) in nodejs在nodejs中使用(mocha,chai)进行错误单元测试
【发布时间】:2020-02-23 23:06:10
【问题描述】:

我在运行测试时出错:mocha test.js

这是错误:

const chaiHttp = require('chai-http');
const sinon = require('sinon');
const sinontest = require('sinon-test');
const test = sinontest(sinon);
const chai = require('chai');
const accounts_controller = require('../controllers/accountsController');
const tickets_controller = require('../controllers/ticketsController');
const gains_controller = require('../controllers/gainsController');
const config = require('./config');
const router = config.serverdev;
const { expect } = chai;
const accounts_spec = require('./accountsSpec'); 

//configuration of chai
chai.use(chaiHttp);
chai.should();

Account
   create an admin account
     Should create a new admin account:
 Uncaught TypeError: Cannot read property 'should' of undefined
  at /api/test/accountsSpec.js:41:17
  at Test.Request.callback (node_modules/superagent/lib/node/index.js:728:3)
  at ClientRequest.<anonymous> (node_modules/superagent/lib/node/index.js:647:10)
  at TLSSocket.socketErrorListener (_http_client.js:432:9)
  at errorOrDestroy (internal/streams/destroy.js:128:12)
  at onwriteError (_stream_writable.js:463:3)
  at onwrite (_stream_writable.js:484:7)
  at internal/streams/destroy.js:60:7
  at TLSSocket.Socket._destroy (net.js:673:5)
  at TLSSocket.destroy (internal/streams/destroy.js:55:8)
  at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:93:12)

这是我的代码:

describe('Account', () => {
/* 
* create admin account group description
*/
describe('create an admin account', () => {
    /* 
    * test case to check if addadmintestaccount function exist 
    */
    it('Should exist',test(function(){
        expect(accounts_controller.addadmintestaccount).to.not.be.undefined;
    }));
    /* 
    * test case to create a new admin account
    */
    it('Should create a new admin account',(done) => {
        chai.request(router)
        .post('/api/test/addadmintestaccount')
        .set("Content-Type", "application/json")
        .end((err,res)=>{
        res.should.have.status(200);
        expect(res.body.success).to.equals(true);
        adminToken = res.body.result;
        exports.adminToken = adminToken;
        done();
        });
    });
});
});

【问题讨论】:

  • 您是否尝试过检查 .end 中提供的回调中的“err”参数?库通常对错误优先回调所做的事情是,如果在异步操作中发生错误,它们会发送一些非空错误并在结果中为空,但是,该结果并非不可能以未定义的形式提供,即“res.should”如何导致此错误。
  • 我刚刚做了console.log(err);,它给了我:错误:写EPROTO 140231124449088:错误:1408F10B:SSL 例程:ssl3_get_record:错误的版本号:../deps/openssl/openssl/ssl/record /ssl3_record.c:332:
  • 有什么解决办法吗?
  • 尝试在代码开头添加process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;。警告:这将导致安全漏洞。
  • 嘿,请问这是什么代码?

标签: node.js mocha.js chai should.js


【解决方案1】:

你必须使用chai-http插件并调用chai.should:

let chaiHttp = require('chai-http');

let should = chai.should();

chai.use(chaiHttp);

其次,您的错误是Cannot read property 'should' of undefined,所以resundefined。请检查您创建成功的帖子(没有err

【讨论】:

  • 嗨,我有这个:chai.use(chaiHttp); chai.should(); 但是当你说let should = chai.should(); 我可以在我的代码中添加应该变量吗?
  • 实际上,您不需要将should 变量放在任何地方。拨打chai.should就够了
  • 你能检查err变量吗,也许你的帖子有问题所以resundefined
  • 它给出:错误:写入 EPROTO 140231124449088:错误:1408F10B:SSL 例程:ssl3_get_record:错误的版本号:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
  • 有什么解决办法吗?
猜你喜欢
  • 2021-09-14
  • 2019-02-14
  • 2018-01-02
  • 2021-03-08
  • 2020-12-07
  • 1970-01-01
  • 2014-11-25
  • 2016-05-26
  • 2021-09-27
相关资源
最近更新 更多