Node.js 在beforeach或before方法中使用柴胡汤

Node.js 在beforeach或before方法中使用柴胡汤,node.js,typescript,mocha.js,chai,Node.js,Typescript,Mocha.js,Chai,我有一个nodejsexpress应用程序,我想对它进行单元测试,它使用cookies。所以我想使用beforeach或before来创建Cookie 工作正常的代码(但没有before方法): 从“chai”导入*作为chai; 从“chai”导入{expect} 导入chaiHttp=require('chai-http'); 从“../../server”导入{app}; 描述('Relaties',()=>{ 描述(‘满足所有关系:GET/api/ehrm klantnr/relatie

我有一个nodejsexpress应用程序,我想对它进行单元测试,它使用cookies。所以我想使用beforeach或before来创建Cookie

工作正常的代码(但没有before方法):

从“chai”导入*作为chai;
从“chai”导入{expect}
导入chaiHttp=require('chai-http');
从“../../server”导入{app};
描述('Relaties',()=>{
描述(‘满足所有关系:GET/api/ehrm klantnr/relatie’,()=>{
它('应该获得所有关系',(完成)=>{
let agent=chai.request.agent(应用程序)
代理人
.put('/api/ehrm klantnr/medewerker/login')
.send({电子邮件:'admin@sfgtest.com“,wachtwoord:”})
.然后(功能(res){
expect(res).to.have.cookie('SESSIONID');
//“代理”现在保存了sessionid cookie,并将发送它
//在下一个请求中返回到服务器:
return agent.get('/api/ehrm klantnr/relatie')
.set('meta','1')
.然后(功能(res){
期望状态(200);
expect(res.body.data[0].vesting).to.equal('Slib Hoofdkantoor');
完成();
});
});
});
});
});
不运行的是以下内容:

import * as chai from 'chai';
import { expect } from 'chai'
import chaiHttp = require('chai-http');

import { app } from '../../server';
 describe('Relaties', () => {
    let agent = chai.request.agent(app);

    describe('First this one', function () {
        beforeEach(function () {
            console.log('outer describe - beforeEach');

            agent
                .put('/api/ehrm-klantnr/medewerker/login')
                .send({ email: 'admin@sfgtest.com', wachtwoord: '<secret>' })
                .then(function (res) {
                    expect(res).to.have.cookie('SESSIONID');
                });
        });
    });

    describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            return agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    expect(res.body.data[0].vestiging).to.equal('Slib Hoofdkantoor');
                    done();
                });
        });
    });
});

从“chai”导入*作为chai;
从“chai”导入{expect}
导入chaiHttp=require('chai-http');
从“../../server”导入{app};
描述('Relaties',()=>{
让agent=chai.request.agent(app);
描述('第一个这个',函数(){
beforeach(函数(){
console.log('outerdescripe-beforeach');
代理人
.put('/api/ehrm klantnr/medewerker/login')
.send({电子邮件:'admin@sfgtest.com“,wachtwoord:”})
.然后(功能(res){
expect(res).to.have.cookie('SESSIONID');
});
});
});
描述(‘满足所有关系:GET/api/ehrm klantnr/relatie’,()=>{
它('应该获得所有关系',(完成)=>{
return agent.get('/api/ehrm klantnr/relatie')
.set('meta','1')
.然后(功能(res){
期望状态(200);
expect(res.body.data[0].vesting).to.equal('Slib Hoofdkantoor');
完成();
});
});
});
});
它完全忽略了我的before或beforeach(两种方法都不起作用)。 也许chai http在每次支持之前或之前都没有支持? 我做错了什么

重组后

describe('Relaties', () => {
    const agent = chai.request.agent(app);

        beforeEach(function (done) {
            console.log('outer describe - beforeEach');

            agent
                .put('/api/ehrm-klantnr/medewerker/login')
                .send({ email: 'admin@sfgtest.com', wachtwoord: '<secret>' })
                .then(function (res) {
                    expect(res).to.have.cookie('SESSIONID');
                    done();
                });
        });


    describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            return agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    expect(res).to.be.an('object');
                    expect(res.body.data).to.be.an('array');
                    expect(res.body.data[0]).to.be.an('object');
                    expect(res.body.data[0].id).to.equal(1);
                    done();
                });
        });
    });
});
description('Relaties',()=>{
const-agent=chai.request.agent(应用程序);
每次之前(功能完成){
console.log('outerdescripe-beforeach');
代理人
.put('/api/ehrm klantnr/medewerker/login')
.send({电子邮件:'admin@sfgtest.com“,wachtwoord:”})
.然后(功能(res){
expect(res).to.have.cookie('SESSIONID');
完成();
});
});
描述(‘满足所有关系:GET/api/ehrm klantnr/relatie’,()=>{
它('应该获得所有关系',(完成)=>{
return agent.get('/api/ehrm klantnr/relatie')
.set('meta','1')
.然后(功能(res){
期望状态(200);
expect(res.to.be.a('object');
expect(res.body.data).to.be.an('array');
expect(res.body.data[0])成为一个('object');
expect(res.body.data[0].id).to.equal(1);
完成();
});
});
});
});

我仍然会收到关于承诺的错误。

如果这对某人有用,这是最终的解决方案:


 describe('Relaties', () => {
    const agent = chai.request.agent(app);

        beforeEach(function (done) {
            console.log('outer describe - beforeEach');

            agent
                .put('/api/ehrm-klantnr/medewerker/login')
                .send({ email: 'admin@sfgtest.com', wachtwoord: '<secret>' })
                .then(function (res) {
                    expect(res).to.have.cookie('SESSIONID');
                    done();
                });
        });


     describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    done();
                });
        });
    }); 
});


描述('Relaties',()=>{
const-agent=chai.request.agent(应用程序);
每次之前(功能完成){
console.log('outerdescripe-beforeach');
代理人
.put('/api/ehrm klantnr/medewerker/login')
.send({电子邮件:'admin@sfgtest.com“,wachtwoord:”})
.然后(功能(res){
expect(res).to.have.cookie('SESSIONID');
完成();
});
});
描述(‘满足所有关系:GET/api/ehrm klantnr/relatie’,()=>{
它('应该获得所有关系',(完成)=>{
agent.get('/api/ehrm-klantnr/relatie')
.set('meta','1')
.然后(功能(res){
期望状态(200);
完成();
});
});
}); 
});

如果这对某人有用,这是最终的解决方案:


 describe('Relaties', () => {
    const agent = chai.request.agent(app);

        beforeEach(function (done) {
            console.log('outer describe - beforeEach');

            agent
                .put('/api/ehrm-klantnr/medewerker/login')
                .send({ email: 'admin@sfgtest.com', wachtwoord: '<secret>' })
                .then(function (res) {
                    expect(res).to.have.cookie('SESSIONID');
                    done();
                });
        });


     describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    done();
                });
        });
    }); 
});


描述('Relaties',()=>{
const-agent=chai.request.agent(应用程序);
每次之前(功能完成){
console.log('outerdescripe-beforeach');
代理人
.put('/api/ehrm klantnr/medewerker/login')
.send({电子邮件:'admin@sfgtest.com“,wachtwoord:”})
.然后(功能(res){
expect(res).to.have.cookie('SESSIONID');
完成();
});
});
描述(‘满足所有关系:GET/api/ehrm klantnr/relatie’,()=>{
它('应该获得所有关系',(完成)=>{
agent.get('/api/ehrm-klantnr/relatie')
.set('meta','1')
.然后(功能(res){
期望状态(200);
完成();
});
});
}); 
});

为什么在每次
之前都将
放在一个没有测试的描述中?查看此链接。它显示了正确的测试结构,我重组了代码谢谢,Se