问题描述
我为沙发床数据库构建了一个API,目前正在为我的HTTP请求使用mocha编写测试。我遇到的问题是我的GET请求测试找不到与POST请求测试一起添加的数据。如果在测试运行之前数据库中已经存储了数据,则GET请求测试将通过。但是它返回的数据不包括POST请求测试中新添加的数据。我需要能够在干净的数据库上运行测试,并使所有测试通过。我认为问题是由于Mocha的异步特性引起的,但我不确定如何解决此问题。这是我的测试用例。
依赖项
const expect = require('chai').expect;
const request = require('supertest');
const app = require('../src/app');
POST请求测试
describe(`POST requests`,()=>{
it('Add new data',function() {
return request(app)
.post('/someendpoint')
.set('Accept','application/json')
.set('Authorization',auth_token)
.send(newData)
.expect(200)
.then( function(res) {
expect(res.body).be.a('Object');
expect(res.body.id).be.a('string');
id = res.body.id;
})
});
});
获取请求测试
describe('GET requests',function() {
it('Get data',function() {
return request(app)
.get('/someendpoint')
.set('Accept',auth_token)
.expect(200)
.then((res) => {
expect(res.body).be.a('Array');
})
});
});
如果有帮助,也可以。每次发出POST请求时,都会在沙发床数据库中创建一个新文档
这是我发现的糟糕解决方案(编辑)
before('timer for get data',function(){
for(let i = 0; i < 1000000000; i++){
}
})
it('get data',function() {
return request(app)
.get('/someendpoint')
.set('Accept','application/json')
.set('Authorization',auth_token)
.expect(200)
.then((res) => {
expect(res.body).be.a('Array');
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)