简体   繁体   English

当应用程序是 Promise 时开始 mocha chai 测试

[英]Start mocha chai test when app is a Promise

A very simplification of the code where the server starts asynchronously服务器异步启动的代码非常简化

// server/app.js
let appPromise = new Promise((resolve, reject) => {
   [..async stuff..]
   const app = express()
   const server = http.createServer(app)
   server.listen(config.port, config.ip, () => {...}
})    
export default appPromise;

Where from I starts the tests:我从哪里开始测试:

// test/index.js
require('@babel/core').transform('code', {});
require('@babel/register');
let tests = require('./tests.js');

module.exports = {tests};

The code where tests are implemented:执行测试的代码:

// test/test.js
const app = require('../server/app')
const chai = require('chai')
const chaiHttp = require('chai-http')
chai.use(chaiHttp);
chai.should();
app.then(() => {
    describe(..tests...)
})

The error I get:我得到的错误:

.then() is not a function

What's going wrong?出了什么问题?

I believe your issue is that you are using ES6 export, but not importing in the ES6 way.我相信您的问题是您使用的是 ES6 导出,而不是以 ES6 方式导入。

Your import of "app" should be:您导入的“app”应该是:

import appPromise from '../server/app';

Also, your promise in "app.js" doesn't seem to resolve anything, if that isn't an omission, you need to resolve something in your promise for .then() to work.此外,“app.js”中的 promise 似乎没有解决任何问题,如果这不是遗漏,则您需要解决 promise 中的某些内容才能使 .then ()工作。 Here is a working example:这是一个工作示例:

const appPromise = new Promise((resolve, reject) => {
    resolve('appPromise resolved');
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM