Githubでビルドを渡すバッジを獲得✅! トラヴィスCIを使用してエクスプレスアプリをテストする
11835 ワード
Travis CIはGithubのオープンソースプロジェクトのための無料のテストビルドを提供しています.あなたは、彼らの申し出に彼らを連れていかない愚か者であるでしょう.彼らの電子メール警報は、何度も私のプロジェクトを保存しました.
このチュートリアルでは、我々は継続的な統合(CI)のためのエクスプレスアプリを設定されます.我々が我々に約束するときはいつでも
速成する
またはrepository , これは、プロジェクトのライブの例として機能します!
ExpressのデフォルトのHello Worldアプリケーションは次のようになります.
私たちのハローワールドアプリケーションを変更しましょう.
一般的なパターンと呼ばれるフォルダ内のテストを配置することです
テストランナーとしてジェストを使用します.ジェスは中を見る
我々のテストの中で、スーパーテストは、我々の要求を模擬します
ましょうget this code into a repository Githubにインストールし、Travis CI GitHub App . テストしているRIPOが有効になっていることを確認してください.
トラヴィスCIとしてtutorial 教えてください.
我々の例では、それは簡単です.我々はノードのどのバージョンを超えて任意の追加設定を指定する必要はありません.JS私たちはテストビルドを使用します.トラバースCIは、デフォルトのテストエイリアスを使用します
さえずるか、問題を上げるrepository あなたが問題に走るならば!
参加150 +人々は私にサインアップnewsletter プログラミングと個人の成長に!
私は技術についてつぶやきます.
このチュートリアルでは、我々は継続的な統合(CI)のためのエクスプレスアプリを設定されます.我々が我々に約束するときはいつでも
master
ブランチ、トラヴィスCIは、リポジトリをクローンし、Linuxのクラウドビルドをスピンし、必要な依存関係をインストールし、テストを実行します!うまくいけば、彼らは通過!そうでなければ、我々は警告されます.インストール
速成する
package.json
ファイル:npm init -y
. 次に、エクスプレスを取得します.npm i express --save
SupertestとJest、開発依存性:npm i supertest jest --save-dev
.またはrepository , これは、プロジェクトのライブの例として機能します!
アプリを急行から取る
ExpressのデフォルトのHello Worldアプリケーションは次のようになります.
// app.js
const express = require('express');
const app = express();
const port = 3000;
app.get('/', async (req, res) => res.status(200).send('Hello World!'));
app.listen(port, () => console.log(`Our app listening on port ${port}!`));
これは手動テスト用です.我々は、このアプリケーションを実行することができますし、右ページが返されていることを確認-しかし、我々は複雑なロジックで50ページを持っているかどうか?このプロセスを自動化したい.最初のステップはapp
オブジェクト.テストを実行するとき、我々は生のHTTPサーバを必要としません.私たちのハローワールドアプリケーションを変更しましょう.
// app.js
const express = require('express');
const app = express();
app.get('/', async (req, res) => res.status(200).send('Hello World!'));
// Don't listen, just export
module.exports = app; // <--
グレート.しかし、どのように我々は今、我々のアプリケーションを起動するのですか?使いましょうseparation of concerns を呼び出し、listen()
別のファイルでserver.js
(これもapp
オブジェクト!// server.js
const app = require('./app');
const port = 3000;
app.listen(port, () => console.log(`Our app listening on port ${port}!`))
我々のアプリケーションを起動するにはnode server.js
. それを加えましょうpackage.json
だから人々は単に使用することができますnpm start
. デフォルトでは、ノード.JSはAを探すserver.js
ファイルを明示しましょう."scripts": {
"start": "node server.js"
},
テスト
一般的なパターンと呼ばれるフォルダ内のテストを配置することです
__tests__
を返します.別のパターンは、テストされているファイルの名前を繰り返すことです.test
前に挿入.js
. したがって、__tests__/app.test.js
.テストランナーとしてジェストを使用します.ジェスは中を見る
__tests__
デフォルトの検索の一部として、任意のテストファイルを実行します.カスタムテストの検索を使用できます--testMatch
.By default [Jest] looks for .js, .jsx, .ts and .tsx files inside of
__tests__
folders, as well as any files with a suffix of .test or .spec (e.g. Component.test.js or Component.spec.js). It will also find files called test.js or spec.js.
我々のテストの中で、スーパーテストは、我々の要求を模擬します
app
オブジェクト.モッキング要求は、サーバーを起動し、ライブリクエストを使用するよりも高速かつ予測可能です.また、簡単に書くことができますsetup and teardown メソッドが必要な場合.// __tests__/app.test.js
const app = require('../app');
const request = require('supertest');
// `describe` is used for test components
describe('GET /', () => {
// `it` is for individual tests
it('responds with 200', async () => {
await request(app)
.get('/')
.expect(200); // If the status code is not 200, this test will fail
});
})
別の線を加えましょうpackage.json
ので、我々のテストを実行することができますnpm test
. 我々が使う理由start
and test
エイリアスは、私たちのソフトウェアは、開発者が初めてそれを拾うために予測されるように、それが他のパッケージと素敵に再生されます."scripts": {
"start": "node server.js",
"test": "jest"
},
npm test
を返します. PASS __tests__/app.test.js
GET /
√ responds with 200 (39ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 2.681s
Ran all test suites.
トラリスシス
ましょうget this code into a repository Githubにインストールし、Travis CI GitHub App . テストしているRIPOが有効になっていることを確認してください.
トラヴィスCIとしてtutorial 教えてください.
Add a .travis.yml file to your repository to tell Travis CI what to do.
我々の例では、それは簡単です.我々はノードのどのバージョンを超えて任意の追加設定を指定する必要はありません.JS私たちはテストビルドを使用します.トラバースCIは、デフォルトのテストエイリアスを使用します
npm test
.# .travis.yml
language: node_js
node_js:
- lts/* # Long Term Support
このファイルをGITHUBに委託して、すぐにテストビルドを待ちます.ビルドを見ることができますtravis-ci.com/{your-username}/{your-repo}
, そして、物事がどこで間違っていたかを見るために、後で彼らをチェックしてください.あなたのトラビスCIビルドステータスバッジのためのマークダウンをつかむためにこのページを使用してください!さえずるか、問題を上げるrepository あなたが問題に走るならば!
参加150 +人々は私にサインアップnewsletter プログラミングと個人の成長に!
私は技術についてつぶやきます.
Reference
この問題について(Githubでビルドを渡すバッジを獲得✅! トラヴィスCIを使用してエクスプレスアプリをテストする), 我々は、より多くの情報をここで見つけました https://dev.to/healeycodes/earn-a-build-passing-badge-on-github--testing-your-express-app-with-travis-ci-1m2fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol