我正在编写一个应用程序,它仅使用基于 Facebook 的身份验证和 PassportJS。提供的部分 API 仅在用户通过身份验证后可用。 我正在尝试找到一种方法来测试 API 的这一部分。我发现了许多使用登录名+密码测试经过身份验证的 API 的示例,但这里不是这种情况。我也找到了这个 thread但不幸的是,我不明白答案有何帮助。
你们海军有没有任何例子可以解释这是如何实现的?
假设我有一个 API:
app.get('/users/me, users.me);
并且此调用要求用户通过 Facebook 的身份验证。
我如何使用 super 测试来测试 is 并使用 FB 模拟用户身份验证?
最佳答案
您可以使用 zombie + mocha 来测试这个....Zombie 在后端(您看不到)打开一个虚拟浏览器并单击页面上的任何链接,然后通过断言使用 mocha 来测试此结果。在启动应用程序之前登录 facebook,然后使用 zombie 登录 fb 身份验证和断言新路由的链接(因为您将获得成功的重定向 url)。假设成功登录后的重定向 url 是/auth/facebook/success 和/auth/facebook 是测试登录的 url。这是可以实现它的代码
var assert = require('assert'),
virtualBrowser = require('zombie');
describe('facebbok Login test', function () {
describe('Checking whether login is successfull based o nthe redirection URL', function () {
it('Checking for the sucess URL', function (done) {
virtualBrowser.visit('http://127.0.0.1:3000/auth/facebook', function (err, browser) {
if (err)
throw err;
console.log('Zombie visited the page,page loaded ');
assert.equal(browser.location.pathname, '/auth/facebook/success');
//all your tests goes here
/*you'll be using this 'browser object in the callback for further tests */
done();
});
});
});
});
通过针对 mocha 运行测试来运行测试(将出现在已安装模块文件夹的 node_module/mocha 中) ~/node_modules/mocha/bin/mocha ./zombie-test/test_sign_facebook.js 如果 mocha 报告超时,因为登录可能很慢,只需使用 -t 参数添加更多阈值测试时间 ~/node_modules/mocha/bin/mocha -t 12000 ./zombie-test/test_sign
关于node.js - 如何测试需要 Facebook 身份验证的基于 express 的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353243/