1

对不起一个新手问题,我还是摩卡的新手。我有一个现有的应用程序,我的任务是创建一个 mocha 测试用例。这个应用程序使用passport-auth0passport用户登录。如何编写 mocha 测试,以便我可以以虚拟用户身份登录以测试受限功能?

4

1 回答 1

3

由于 Passport 使用可以交换的策略,因此一种选择是auth0在运行测试时使用模拟来代替实际策略。这看起来像:

function MockStrategy() {
}

MockStrategy.prototype.authenticate = function(req) {
    self.success({ id: 1, username: 'joe' );
}

// In test setup, mock out the strategy with one that returns
// dummy data.
passport.use('auth0', new MockStrategy());

现在您可以编写测试用例,其中req.user将始终joe由模拟策略提供。您可以以类似的方式扩展它以涵盖身份验证失败。

这是我的首选方法,因为它的侵入性最小。根据应用程序代码的结构方式,可能存在其他需要并需要模拟的依赖项。对于这些情况,我发现proxyquire很有用。

于 2015-04-27T16:30:59.040 回答