Connect中单元测试之session mock解决方案 - CNode技术社区

Connect中单元测试之session mock解决方案
发布于 14 年前 作者 JacksonTian 8304 次浏览 最后一次编辑是 9 年前

在Connect的项目中,如果遇到有session的部分,经常会造成无法注入session的方式,因为cookie中的connect.sid总是可能因为某些原因变化,不能保证一致。下面提供了一个方法,去修改已经通过app.use("/route", hander);注册的控制器。

 app.replace = function (route, handle) {
 if (route === "/") {
 return;
 }
 for (var i = 0, l = app.stack.length; i < l; i++) {
 var ware = app.stack[i];
 if (ware.route === route) {
 app.stack[i].handle = handle;
 break;
 }
 };
 };

在测试的时候,通过

 app.replace("/route", function (request, response) {
 // 在此注入session中的数据。
 request.session.user = {
 sessionId: "d7cc03ea3b5bc3031dadfed21e014f",
 userid: "balabala"
 };
 // 调用原始控制器
 controller(request, response);
 });

在测试完成后,记得通过replace替换回来。

app.replace("/route", controller);

通过这种方式,可以轻松mock session匹配或者不匹配的情况。

回到顶部

AltStyle によって変換されたページ (->オリジナル) /