代码之家  ›  专栏  ›  技术社区  ›  Viktorija Filipov

错误:done()调用时没有错误:{“req”:{……}请求无误完成,但测试未通过

  •  0
  • Viktorija Filipov  · 技术社区  · 6 年前

    我正在努力解决我的测试,但似乎什么都没用。目前,我正在使用mocha、supertest和chai,但即使请求成功执行,我也会看到这个恼人的错误,我无法摆脱:

    调用done()时没有错误:{–req–prefied157;:{–prefied5}请求已完成,但测试未通过

    代码:

    let should = require('chai').should(),
        expect = require('chai').expect,
        constants = require('./constants'),
        supertest = require('supertest'),
        api = supertest(constants.ENVIRONMENT),
        express = require('express'),
        http = require('http'),
        request = require('request'),
        app = express(),
        bodyParser = require('body-parser'),
        port = process.env.PORT || 3000,
        assert = require('assert');
        
        describe('Create device API call', () => {
    
        function createToken() {
            return new Promise(resolve =>
                request.post(
                    'myURl',
                    { 
                     json: 
                            { 
                              "username": "myUsername", 
                              "password": "myPassword" 
                            } 
                    },
                    function (error, response, body) {
                        if (!error && response.statusCode == 200) {
                            let token = (body.accessList[0].accessToken);
                            resolve(token);
    
                        }
                        else {
                            console.log("Server error get token")
                        }
    
                    })
            )
        }
    
        it('should create device', async (done) => {
    
            let token = await createToken();
    
            //console.log(`Token is ${token}`);
    
            api.post('/deviceManifests/1/devices')
                .set('Accept', 'application/json')
                .set('Authorization', `Bearer ${token}`)
                .send({
                    "name": "QA integration",
                    "deviceKey": "somekey38957",
                    "defaultBinding": true
                })
                .expect('content-Type', /json/)
                .expect(201)
                .expect(function (res, err) {
                    assert.equal(res.body.name, 'QA integration');
    
                }).then(done);
        });
    
    });    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Steve Holgado    6 年前

    你通过了 完成 进入 然后

    因此 完成 将传递一个参数。

    但是,如果您将参数传递给 完成 ,它希望这是一个错误。

    请尝试以下操作:

    .then(function () {
      done()
    })
    

    。。。或使用箭头功能:

    .then(() => done())