你如何测试快递中的req.flash()?

时间:2011-10-13 08:32:06

标签: node.js tdd express

我目前有一个我要测试的快速/节点应用程序,但它提供的响应是req.flash('warn', 'message goes here');

的形式

不幸的是,express.js上的文档没有详细描述此消息如何传达给客户端。

我知道expresso有一个assert.response()函数来测试响应对象。我想知道flash消息的去向,以及我如何以类似的方式测试它(或者如果它不可能,我应该通过响应对象发送所有内容)。

1 个答案:

答案 0 :(得分:12)

我不认为这应该是那样的。您不能只使用req.flash()作为回复请求的唯一方式。

这更像是在normal模板上向用户发送消息的简单方法 - 例如插入/创建文章后,您可以说:

req.flash('error', 'could not insert because .... ');

req.flash('info', 'article added successfully!');

对于我的上一个项目,我然后在我的应用程序中添加了两个动态助手:

app.dynamicHelpers({
    info: function (req, res) {
        return req.flash('info');
    },
    error: function (req, res) {
        return req.flash('error');
    }
});

所以我可以在我看来这样说:

<% if (info !== undefined && info != "") { %>
<div class="infoBubble"> 
    <%= info %>
</div>
<% } %>

<% if (error !== undefined && error != "") { %>
<div class="errorBubble"> 
    <strong>Fehler</strong>: <%= error %>
</div>
<% } %>

结果如下:

screenshot of flash bubble