如何在Express Jest测试中清除/重置redis-mock?
我有一个应用程序,可以记录访问url的次数。点票是在Redis上完成的。我使用的是redis-mock
,它在内存中模拟像INCR
这样的命令。
下面的测试访问页面3次,并期望响应对象将current
报告为3
let app = require('./app');
const supertest = require("supertest");
jest.mock('redis', () => jest.requireActual('redis-mock'));
/* Preceeded by the exact same test */
it('should report incremented value on multiple requests', (done) => {
const COUNT = 3;
const testRequest = function (cb) { supertest(app).get('/test').expect(200, cb) };
async.series([
testRequest,
testRequest,
testRequest
], (err, results) => {
if (err) console.error(err);
const lastResponse = _.last(results).body;
expect(
lastResponse.current
).toBe(COUNT);
done();
});
});
问题是,如果我一直重用app
,内部的"redis“模拟将在两次测试之间继续递增。
我可以通过这样做来绕过这一步:
beforeEach(() => {
app = require('./app');
jest.resetAllMocks();
jest.resetModules();
});
重写app似乎可以做到这一点,但是有没有办法在测试之间清理被“内部”模仿的模块呢?
转载请注明出处:http://www.hrtxgs.com/article/20230526/1210509.html
随机推荐
-
如何在Express JS或Node JS中创建登录表单?
Express JS是Node JS的一个流行框架,用于创建web应用程序和Restful API。因为它用于后端脚本,所以表单处理是它的重要部分。我想知道我们如何创建登录表单并处理它。
-
如何在express中使用原始中间件
我尝试了下面这段代码://index.js const express = require(express) const app = express() app.post(/, express.raw(), (req, res) = {...
-
如何在Express中获取所有已注册的路线?
我有一个使用Node.js和Express构建的Web应用程序。现在,我想用适当的方法列出所有已注册的路由。 例如,如果我执行过 app.get('/', function (...) { ... }); app.get('/foo/:...
-
如何在Express JS中解码URI参数
我正在尝试使用ajax向我的节点快速路由发送GET请求,但是我不知道如何解码URI参数。这就是发送到请求GET /exercises/Day%201的内容。我想解码它,这样它就像--第一天那么我的查询将如下所示const program =...
-
如何在express js server中删除超过24小时的mongoose文档?
我正在编写一个使用ExpressJS服务器和mongoose来处理MongoDB的应用程序。我将从外部传感器接收一些测量结果,并将它们存储在数据库中。我将只使用过去24小时的测量值。有没有办法从Mongo中自动删除超过24小时的文档?每个测...
-
如何在Express中获取URL参数?
我在tagid从URL:获取值方面遇到问题localhost:8888/p?tagid=1234。 帮助我更正我的控制器代码。我无法获得tagid价值。 我的代码如下: app.js: var express = require('...
-
如何用JEST在express中间件中测试next()
经过很多努力,我还是没能弄明白这一点,因此我计划得到帮助。我在我的node+ express应用程序中使用了一个中间件,它看起来像这样:import mainConfig from ../mainConfig/index; const ax...
-
如何在Express中的本地主机上设置process.env变量?
我希望我的代码既可以在本地主机上运行,也可以在服务器上运行。在heroku中有一个GUI可以做到这一点,但是我如何在本地设置它们呢?
-
如何在express中捕获4xx和5xx错误?
假设用户正在创建一个帐户,但输入无效,因此我将错误发送到前端并返回409状态代码。但是当错误出现在服务器端时,我不想返回409状态代码,而是返回5xx状态代码。我如何才能做到这一点?exports.signup = (req, res) =...
-
如何在express js中声明一个可以从任何视图调用的函数?
是否可以在我的express js mvc web应用程序中的任何视图中创建一个可以调用的函数?如何在中间件中声明这样的函数,以便直接从视图访问?所以我可以像这样调用这个函数:%= getVar(my_name) % // calling ...