【자신 메모】supertest와 passport-stub를 mocha 테스트에 결합
supertest란?
supertest는 mocha와 함께 사용되지만 Express의 Router 모듈을 테스트 할 수 있습니다.
예를 들어 다음 예제에서는
/
에 액세스하면 indexRouter가 처리되는지 테스트합니다.물론,
/login
도 /logout
도 테스트해 줍니다.app.js
app.use('/', indexRouter);
app.use('/login', loginRouter);
app.use('/logout', logoutRouter);
passport-stub란?
passport-stub은 passport 모듈을 사용하는 인증 시스템을 테스트하는 데 유용합니다.
예를 들어,
"facebook 인증 등의 테스트를 하고 싶지만, facebook 계정을 가지고 있지 않다!"
같은 시간에 유용합니다.
테스트 예
test.js
//supertestの読み込み
const request = require('supertest');
//supertestで使う、app.jsの読み込み
const app = require('app');
//passport-stubの読み込み
const passportStub = require('passport-stub');
//ログイン(/login)のテストであることを明示
describe('/login', () => {
//before、afterはmochaの機能
before(() => {
//テストの前にpassportstubモジュールでログイン
passportStub.install(app);
//'testuser'としてログイン
passportStub.login({ username: 'testuser' });
});
after(() => {
//テストの後にpassportstubモジュールでログアウト
passportStub.logout();
passportStub.uninstall(app);
});
//以下の記法は、supertestの記法
//テストの内容を指定
it('ログインのためのリンクが含まれる', (done) => {
//request(app).get('/login') で、 /login への GETリクエストを作成
request(app)
.get('/login')
//文字列を2つ引数として渡すとヘッダのテスト
.expect('Content-Type', 'text/html; charset=utf-8')
//正規表現を1つ渡すとHTMLのテスト
.expect(/<a href="\/auth\/facebook"/)
//期待されるステータスコードの整数と、テスト自体の引数に渡されるdone 関数を渡すと、レスポンスヘッダのテスト
.expect(200, done);
});
it('ログイン時はユーザー名が表示される', (done) => {
request(app)
.get('/login')
.expect(/testuser/)
.expect(200, done);
});
});
//ログアウト(/logout)のテストであることを明示
describe('/logout', () => {
//テスト内容を明示
it('ログアウト後に / にリダイレクトされる', (done) => {
////request(app).get('/logout')で、/logoutへのGETリクエストを作成
request(app)
.get('/logout')
// `/`へリダイレクトされるかのテスト
.expect('Location', '/')
// ステータスコードがリクエストであるかのテスト
.expect(302, done);
});
});
describe
, it
, before
, after
는 mocha 쓰는 법.request(app).get
, .expect
는 supertest 쓰는 법passportStub.install(app)
, passportStub.login
는 passport-stub 쓰는 법테스트 결과
Reference
이 문제에 관하여(【자신 메모】supertest와 passport-stub를 mocha 테스트에 결합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tarotaro1129/items/6ad6834f2a74c46de8f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)