在研究了这些问题之后:
我能够做到这一点:
package.json
{
"name": "my-project",
"jest": {
"testEnvironment": "./testEnvironment.js",
}
}
testEnvironment.js
const express = require('express');
// const NodeEnvironment = require('jest-environment-node'); // for server node apps
const NodeEnvironment = require('jest-environment-jsdom'); // for browser js apps
class ExpressEnvironment extends NodeEnvironment {
constructor(config, context) {
super(config, context);
}
async setup() {
await super.setup();
const app = express();
this.global.server = app.listen(0, "127.0.0.1", () => {
console.log(`Running express server on '${JSON.stringify(server.address())}'...`);
how to make setup() wait until app.listen callback is finished,
i.e., the server has properly started.
});
app.use(express.static('../testfiles'));
}
async teardown() {
this.global.server.close();
await super.teardown();
}
runScript(script) {
return super.runScript(script);
}
}
module.exports = ExpressEnvironment;
如何使setup()
等待app.listen()
回调完成,即服务器已正确启动?
以前,当我使用beforeAll()
时,我的代码工作正常,因为我可以使用done()
通过beforeAll()传递的异步回调:
const express = require('express');
const app = express();
var server;
beforeAll(async (done) => {
server = app.listen(0, "127.0.0.1", () => {
console.log(`Running express server on '${JSON.stringify(server.address())}'...`);
done();
});
app.use(express.static('../testfiles'));
});
afterAll(() => {
server.close();
});
如何等效于NodeEnvironment
setup()
函数上的beforeAlldone()
回调?
延伸罗伯特·门内尔的回答:
您还可以放置一个自定义回调函数,该函数将只调用promise resolver作为app.listen()
的第三个参数,它应该运行该代码,然后在需要某种诊断时调用resolve。
let server;
const app = express();
await new Promise(function(resolve) {
server = app.listen(0, "127.0.0.1", function() {
console.log(`Running express server on '${JSON.stringify(server.address())}'...`);
resolve();
});
});
this.global.server = server;
然后,您可以访问测试文件中的this.global.server
,以获取服务器端口/地址:是否可以在my Jest测试套件中创建一个Express.js服务器?
您可以通过等待listen,将其包装为promise,并调用promise resolve作为对服务器listen的回调来实现这一点
const app = express();
let server;
await new Promise(resolve => server = app.listen(0, "127.0.0.1", resolve));
this.global.server = server;
您还可以放置一个自定义回调函数,该函数将只调用promise resolver作为app.listen()
的第三个参数,它应该运行该代码,然后在需要某种诊断时调用resolve。
我使用标准配置的sockjs。 函数的工作原理如下: 交换机中调用的每个方法都会向客户端发回一条消息。 现在我的问题是,我想对我的代码进行测试(我想晚做总比不做好),但我不知道如何做。我开始写正常的超文本传输协议测试在摩卡超级测试,但我只是不知道如何处理webSocket。 我希望通过所有测试只有一个webSocket连接可以重用,我在第一条消息后将webSocket连接与用户会话绑定,我也想测试
本文向大家介绍Mac上使用Docker如何快速启动MySQL测试,包括了Mac上使用Docker如何快速启动MySQL测试的使用技巧和注意事项,需要的朋友参考一下 本文主要讨论使用Docker快速启动 MySQL 测试的方法,包括Mac环境。一起看看吧! 近来业界有很多对Docker的讨论,其生态系统发展得很快,然而,从简单的“入门”或“引导”类的文章中能容易地找到成熟的技术,但Docker不然。
我在一个功能文件中有4个测试,@first和@then有2个不同的标签。我希望@first测试首先以并行性运行,@then测试在所有@first测试完成后运行,并行性也是如此。 这个项目在这里:https://github.com/marcesso/qafTesting 问题是所有测试都运行两次(每个测试方法运行一次),@test注释的“groups”属性没有像我预期的那样过滤测试(非常底层htt
官方版本下载 最新的MOAC SCS软件可以从官方的发布地址下载 release link, 解压后可以看到有scs的目录,其中有userconfig.json文件,其内容如下: { "VnodeServiceCfg": "localhost:50062", "DataDir": "./scsdata", "LogPath": "./_logs", "Benefic
SAP商务1905 我有一个节点应用程序,我想与我的Hybris集成。我已经创建了一个自定义的addon,并将我的节点应用程序文件放在addon扩展中。现在我想在Hybris服务器start上运行下面的命令。 通过将npm命令放在myextension_compileuisrc_executor buildcallback下,我可以在ant构建上启动节点服务器。 但我的目标是只在MyExtensi
环境搭建 假设已经按照 Weex官方 的教程学会了如何搭建本地开发环境进行 Weex 开发。 第一步:安装 bui-weex-toolkit bui-weex-toolkit 是配合 BUI-Weex 框架使用的命令行工具(CLI),能够快速创建框架脚手架工程、查看发布版本等。该工具需要安装在全局: npm install -g bui-weex-toolkit 正常安装后,打开命令行,输入bui