摩卡:写作依赖测试

时间:2018-02-23 12:23:05

标签: node.js mocha chai

我在NodeJS中使用Mocha / Chai框架来编写测试。他们应该独立执行。现在要求是在条件下执行它们。例如,在删除员工之前,请确保在数据库中创建员工。 '创造'& “删除”是两个不同的API,虽然它们将单独执行,但在“删除”的情况下,我必须先调用“创建”API从其响应中获取employeeId,然后对同一employeeId执行“删除”。编写嵌套测试的最佳方法是什么?这就是我单独编写测试的方式:

var _customHeaders = {    
    "authToken": "AVeryLargeStringWithActualToken"
};

describe('POST /Employee/Create', function() {
    it('should create a new employee in database.', function(done) {
        request
            .get('/Employee/Create/')
            .set(_customHeaders)
            .send({ "firstName": "ABC", "lastName": "XYZ", "departmentId": 123 })
            .expect(200)
            .expect('Content-Type', 'application/json')
            .end(function(err, res) {
                expect(res.body.success).to.equal(true);
                expect(res.body.message).to.equal('Employee Created!');
                done();
            });
    });
});

describe('POST /Employee/Delete', function() {
    it('should delete an employee from database.', function(done) {
        request
            .get('/Employee/Delete/')
            .set(_customHeaders)
            .send({ "employeeId": 123 })
            .expect(200)
            .expect('Content-Type', 'application/json')
            .end(function(err, res) {
                expect(res.body.success).to.equal(true);
                expect(res.body.message).to.equal('Employee Deleted!');
                done();
            });
    });
});

我如何编写'删除'以便首先创建一个员工,然后如果'创建'成功则继续删除?

1 个答案:

答案 0 :(得分:0)

如果您在删除测试之前需要设置,首先创建必要的Employee,那么这可能应该在之前的每个'在您的describe块中挂钩以进行删除测试。这应该与实际测试Employee创建的测试完全分开(尽管可以将公共代码分解为辅助函数)。您甚至可能希望使用此设置代码将employee目录放入数据库,而不是像实际测试此操作的函数一样通过REST API。