我正在使用Jest测试我的代码。 我想要实现的是测试从http到https的重定向。 (如果存在,则为process.env.IS_PRODUCTION)。
我不知道如何测试它,如何模拟它等等……
我尝试过标准获取要求,但是不知道如何模拟环境变量或以不同方式对其进行测试
it('should redirect from http to https, (done) => {
request(server)
.get('/')
.expect(301)
.end((err, res) => {
if (err) return done(err);
expect(res.text).toBe('...')
return done();
});
}, 5000);
我希望能够测试此重定向:)
答案 0 :(得分:0)
前言:我对笑话,表达或结点不熟悉。但是我发现测试显式配置(使用显式值实例化对象)比隐式配置(环境变量和它们上的实现开关)要容易得多:
我不确定request
或server
是什么,但显式方法可能类似于:
it('should redirect from http to https, (done) => {
const server = new Server({
redirect_http_to_https: true,
});
request(server)
.get('/')
.expect(301)
.end((err, res) => {
if (err) return done(err);
expect(res.text).toBe('...')
return done();
});
}, 5000);
这允许测试将服务器显式配置为所需的状态,而不是破坏环境。
此方法还有助于保持process configuration at the top level of your application:
const server = new Server({
redirect_http_to_https: process.env.IS_PRODUCTION,
});
答案 1 :(得分:0)
您可以使用node-mocks-http库,该库允许您模拟请求和响应对象。
示例:
const request = httpMocks.createRequest({
method: 'POST',
url: '/',
});
const response = httpMocks.createResponse();
middlewareThatHandlesRedirect(request, response);
我从不开玩笑,但我相信一旦调用了中间件,您就可以检查response.location参数