2
我正在構建一個應用程序,並且作爲它的一部分,我在Express上有一個REST API,我希望爲其編寫集成測試。我使用「mocha」和「chai-http」來執行此操作,除了添加身份驗證之外,這一切都運行良好。因此,在類似的測試中:如何使用Passport測試Express REST API使用mocha進行Google OAuth身份驗證?
process.env.NODE_ENV = 'development'
let chai = require('chai')
let chaiHttp = require('chai-http')
let should = chai.should()
var server = require('../app.js')
var schemas = require('../schemas')
var Snippet = schemas.Snippet
chai.use(require('chai-passport-strategy'))
chai.use(chaiHttp)
describe('Snippet',() => {
beforeEach((done) => {
Snippet.destroy({
where: {}
}).then(function() {
done()
}).catch(function (e) {
done(e)
})
})
describe('snippet create',() => {
it('it should store a snippet ', (done) => {
let snippet = {
title: 'Test',
description: 'Mock description',
snippet: 'Mock body',
keywords: 'Test key, words;input',
type: 'sql',
rating: 1,
approved: false
}
chai.request(server)
.post('/api/submitSnippet/')
.send(snippet)
.end((err, res) => {
if (err) console.log(err)
res.should.have.status(200)
res.body.should.be.a('object')
res.body.should.have.property('title')
res.body.should.have.property('description')
res.body.should.have.property('snippet')
res.body.should.have.property('keywords')
res.body.should.have.property('type')
res.body.should.have.property('rating')
res.body.should.have.property('approved')
res.body.title.should.equal('Test')
res.body.description.should.equal('Mock description')
res.body.snippet.should.equal('Mock body')
res.body.keywords.should.equal(['Test', 'key', 'words', 'input'])
res.body.type.should.equal('sql')
res.body.rating.should.equal(1)
res.body.approved.should.equal(false)
done()
})
})
})
})
我會得到一個錯誤,因爲我的請求不會來自已驗證的會話。我正在使用Google OAuth策略的「護照」,因此我無法向登錄頁面發送發佈請求,也無法想到登錄或驗證我的請求的方式。 (數據庫操作是Sequelize)。我如何測試應用程序中的API操作?有沒有標準的方法?
自從創建這篇文章以來,您是否有解決方案的運氣? – vapurrmaid
@vapurrmaid是的,我添加了一個答案。 –