【자신 메모】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 쓰는 법

테스트 결과



좋은 웹페이지 즐겨찾기