how-to-mock-services-using-mountebank-and-node-js
_著者はhttps://www.brightfunds.org/funds/open-internet-free-speech[Open Internet / Free Speech Fund]を選択してhttps://do.co/w4do-ctaの一部として寄付を受け取りました[寄付のために書く]プログラム。
前書き
複雑なhttps://en.wikipedia.org/wiki/Service-oriented_architecture [サービス指向アーキテクチャ(SOA)]では、プログラムは多くの場合、特定のワークフローを実行するために複数のサービスを呼び出す必要があります。 すべてが整ったらこれで問題ありませんが、作業中のコードにまだ開発中のサービスが必要な場合は、他のチームが作業を完了するまで待ってから作業を開始できます。 さらに、テスト目的で、天気APIや記録管理システムなどの外部ベンダーサービスと対話する必要がある場合があります。 ベンダーは通常、必要な数の環境を提供しておらず、多くの場合、システム上のテストデータを簡単に制御できません。 このような状況では、未完成のサービスや管理外のサービスにより、コードテストがイライラする可能性があります。
これらすべての問題の解決策は、_サービスモック_を作成することです。 サービスモックは、最終製品で使用するサービスをシミュレートするコードですが、実稼働で使用する実際のサービスよりも軽量で、複雑さが少なく、制御が容易です。 デフォルトの応答または特定のテストデータを返すように模擬サービスを設定し、依存サービスが実際に存在するかのように、テストに関心のあるソフトウェアを実行できます。 このため、サービスをモックする柔軟な方法があると、ワークフローをより速く、より効率的にすることができます。
エンタープライズ環境では、模擬サービスの作成は「サービスの仮想化」と呼ばれることもあります。 多くの場合、サービスの仮想化は高価なエンタープライズツールに関連付けられていますが、サービスのモックに高価なツールは必要ありません。 Mountebankは、https://en.wikipedia.org/wiki/Representational_state_transfer [REST]およびhttps://en.wikipedia.org/wiki/SOAP[SOAP]サービス。 また、https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol [SMTP]またはhttps://en.wikipedia.org/wiki/Transmission_Control_Protocol[TCP]リクエストをモックするために使用できます。
このガイドでは、https://nodejs.org/en/about/ [Node.js]とMountebankを使用して、2つの柔軟なサービスモックアプリケーションを構築します。 両方のモックサービスは、HTTPでRESTリクエストの特定のポートをリッスンします。 この単純なモッキング動作に加えて、サービスはhttps://en.wikipedia.org/wiki/Comma-separated_values[comma-separated values(CSV)ファイル]からモックデータも取得します。 このチュートリアルの後、あらゆる種類のサービス動作をモックできるようになるため、アプリケーションをより簡単に開発およびテストできます。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
マシンにインストールされているNode.jsのバージョン8.10.0以降。 このチュートリアルでは、バージョン8.10.0を使用します。 Node.jsをインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04 [Ubuntu 18.04にNode.jsをインストールする方法]をご覧ください。またはhttps://www.digitalocean.com/community/tutorials/how-to-install-node-js-and-create-a-local-development-environment-on-macos[Node.jsをインストールして作成する方法macOSのローカル開発環境]。
-
cURLやhttps://www.getpostman.com/[Postman]などのHTTPリクエストを作成するツール。 このチュートリアルでは、ほとんどのマシンにデフォルトでインストールされるため、cURLを使用します。マシンにcURLがない場合は、https://curl.haxx.se/docs/install.html [インストールドキュメント]を参照してください。
ステップ1-Node.jsアプリケーションの開始
この手順では、Mountebankインスタンスのベースとして機能する基本的なNode.jsアプリケーションと、後の手順で作成する模擬サービスを作成します。
まず、アプリケーションを配置する新しいディレクトリを作成します。 好きな名前を付けることができますが、このチュートリアルでは「+ app +」という名前を付けます。
mkdir
次のコマンドを使用して、新しく作成したディレクトリに移動します。
cd
新しいNode.jsアプリケーションを起動するには、「+ npm init +」を実行してプロンプトに入力します。
npm init
これらのプロンプトからのデータは、 `+ package.json`ファイルに記入するために使用されます。このファイルには、アプリケーションが何であるか、依存するパッケージ、使用するさまざまなスクリプトが記述されています。 Node.jsアプリケーションでは、スクリプトはアプリケーションをビルド、実行、およびテストするコマンドを定義します。 プロンプトのデフォルトを使用するか、パッケージ名、バージョン番号などを入力できます。
このコマンドを完了すると、 `+ package.json +`ファイルを含む基本的なNode.jsアプリケーションが作成されます。
次を使用して、Mountebank npmパッケージをインストールします。
npm install -save mountebank
このコマンドは、Mountebankパッケージを取得し、アプリケーションにインストールします。 依存関係としてMountebankで + package.json`ファイルを更新するには、
+ -save`フラグを使用してください。
次に、コマンド + node src / index.js`を実行する開始スクリプトを
+ package.json`に追加します。 このスクリプトは、アプリのエントリポイントを「+ index.js +」として定義します。これは後の手順で作成します。
テキストエディタで `+ package.json`を開きます。 任意のテキストエディタを使用できますが、このチュートリアルではnanoを使用します。
nano package.json
`” scripts “`セクションに移動して、行 `” start “:” node src / index.js “`を追加します。 これにより、アプリケーションを実行するための `+ start +`コマンドが追加されます。
最初のプロンプトの入力方法に応じて、 `+ package.json`ファイルは次のようになります。
app / package.json
{
"name": "diy-service-virtualization",
"version": "1.0.0",
"description": "An application to mock services.",
"main": "index.js",
"scripts": {
},
"author": "Dustin Ewers",
"license": "MIT",
"dependencies": {
"mountebank": "^"
}
}
これで、アプリを作成し、Mountebankをインストールし、起動スクリプトを追加して作成したMountebankアプリケーションのベースができました。 次に、アプリケーション固有の設定を保存する設定ファイルを追加します。
ステップ2-設定ファイルの作成
この手順では、Mountebankインスタンスと2つの模擬サービスがリッスンするポートを決定する設定ファイルを作成します。
Mountebankまたはモックサービスのインスタンスを実行するたびに、そのサービスを実行するネットワークポートを指定する必要があります(例: + http:// localhost:5000 / +
)。 これらを設定ファイルに置くことにより、アプリケーションの他の部分は、サービスとMountebankインスタンスのポート番号を知る必要があるときはいつでもこれらの設定をインポートできます。 これらを定数としてアプリケーションに直接コーディングすることもできますが、ファイルに保存すると、後で設定を変更する方が簡単になります。 この方法では、1つの場所で値を変更するだけで済みます。
最初に、 `+ app `ディレクトリから ` src +`というディレクトリを作成します:
mkdir src
作成したフォルダーに移動します。
cd src
`+ settings.js +`というファイルを作成し、テキストエディターで開きます。
nano settings.js
次に、メインのMountebankインスタンスと、後で作成する2つの模擬サービスのポートの設定を追加します。
app / src / settings.js
module.exports = {
port: 5000,
hello_service_port: 5001,
customer_service_port: 5002
}
この設定ファイルには3つのエントリがあります。「+ port:5000+」はポート「5000」をメインMountebankインスタンスに割り当て、「+ hello_service_port:5001+」はポート「5001」をHello Worldテストサービスに割り当てます後の手順で作成し、 `+ customer_service_port:5002 `はCSVデータで応答するモックサービスアプリにポート ` 5002 `を割り当てます。 ここのポートが占有されている場合は、自由に変更してください。 ` module.exports = +`は、他のファイルがこれらの設定をインポートできるようにします。
このステップでは、 `+ settings.js +`を使用して、Mountebankとモックサービスがリッスンするポートを定義し、これらの設定をアプリの他の部分で使用できるようにしました。 次の手順では、これらの設定を使用して初期化スクリプトを作成し、Mountebankを起動します。
手順3-初期化スクリプトの構築
この手順では、Mountebankのインスタンスを開始するファイルを作成します。 このファイルはアプリケーションのエントリポイントになります。つまり、アプリを実行すると、このスクリプトが最初に実行されます。 新しいサービスモックを作成するときに、このファイルに行を追加します。
+ src`ディレクトリから、
+ index.js`というファイルを作成し、テキストエディターで開きます。
nano index.js
前の手順で作成した `+ settings.js +`ファイルで指定されたポートで実行されるMountebankのインスタンスを開始するには、次のコードをファイルに追加します。
app / src / index.js
const mb = require('mountebank');
const settings = require('./settings');
const mbServerInstance = mb.create({
port: settings.port,
pidfile: '../mb.pid',
logfile: '../mb.log',
protofile: '../protofile.json',
ipWhitelist: ['*']
});
このコードは3つのことを行います。 最初に、以前にインストールしたMountebank npmパッケージをインポートします( + const mb = require( 'mountebank'); +
)。 次に、前の手順で作成した設定モジュールをインポートします( + const settings = require( './ settings'); +
)。 最後に、 `+ mb.create()+`でMountebankサーバーのインスタンスを作成します。
サーバーは、設定ファイルで指定されたポートでリッスンします。 + pidfile +
、 + logfile +
、および `+ protofile `パラメーターは、MountebankがプロセスIDの記録、ログの保存場所の指定、カスタムプロトコル実装をロードするファイルの設定に内部的に使用するファイル用です。 ` ipWhitelist +`設定は、Mountebankサーバーとの通信を許可するIPアドレスを指定します。 この場合、任意のIPアドレスにそれを開いています。
ファイルを保存して終了します。
このファイルを配置したら、次のコマンドを入力してアプリケーションを実行します。
npm start
コマンドプロンプトが消え、以下が表示されます。
info: [mb:5000] mountebank v now taking orders - point your browser to http://localhost:5000/ for help
これは、アプリケーションが開いていて、リクエストを受け取る準備ができていることを意味します。
次に、進捗状況を確認します。 新しいターミナルウィンドウを開き、「+ curl」を使用して次の「+ GET」リクエストをMountebankサーバーに送信します。
curl http://localhost:5000/
これにより、次のJSON応答が返されます。
Output{
"_links": {
"imposters": {
"href": "http://localhost:5000/imposters"
},
"config": {
"href": "http://localhost:5000/config"
},
"logs": {
"href": "http://localhost:5000/logs"
}
}
}
Mountebankが返すJSONは、Mountebankでオブジェクトを追加または削除するために使用できる3つの異なるエンドポイントを記述しています。 `+ curl`を使用してこれらのエンドポイントにリクエストを送信することにより、Mountebankインスタンスと対話できます。
完了したら、最初のターミナルウィンドウに戻り、 + CTRL +
+ `+ C +`を使用してアプリケーションを終了します。 これによりNode.jsアプリが終了し、追加を続けることができます。
これで、Mountebankのインスタンスを正常に実行するアプリケーションができました。 次のステップでは、REST要求を使用してMountebankアプリケーションにモックサービスを追加するMountebankクライアントを作成します。
ステップ4-Mountebankクライアントの構築
Mountebankは、REST APIを使用して通信します。 最後の手順で説明したさまざまなエンドポイントにHTTPリクエストを送信することにより、Mountebankインスタンスのリソースを管理できます。 モックサービスを追加するには、偽のエンドポイントにHTTP `+ POST`リクエストを送信します。 imposterは、Mountebankの模擬サービスの名前です。 偽者は、モックで必要な動作に応じて、単純な場合も複雑な場合もあります。
このステップでは、Mountebankクライアントを作成して、 `+ POST`リクエストをMountebankサービスに自動的に送信します。 「+ curl」またはPostmanを使用して「+ POST」リクエストを偽装エンドポイントに送信できますが、テストサーバーを再起動するたびに同じリクエストを送信する必要があります。 複数のモックを使用してサンプルAPIを実行している場合、これを行うクライアントスクリプトを記述する方が効率的です。
`+ node-fetch +`ライブラリをインストールすることから始めます:
npm install -save node-fetch
https://www.npmjs.com/package/node-fetch [+ node-fetch +
library]はJavaScript Fetch APIの実装を提供します。これを使用して、より短いHTTPリクエストを作成できます。 標準の `+ http `ライブラリを使用できますが、 ` node-fetch +`を使用すると、より軽量なソリューションになります。
次に、Mountebankにリクエストを送信するクライアントモジュールを作成します。 詐欺師を投稿する必要があるだけなので、このモジュールには1つのメソッドがあります。
+ nano`を使用して、
+ mountebank-helper.js`というファイルを作成します。
nano mountebank-helper.js
クライアントを設定するには、次のコードをファイルに追加します。
app / src / mountebank-helper.js
const fetch = require('node-fetch');
const settings = require('./settings');
function postImposter(body) {
const url = `http://127.0.0.1:${settings.port}/imposters`;
return fetch(url, {
method:'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body)
});
}
module.exports = { postImposter };
このコードは、 + node-fetch +`ライブラリと設定ファイルを取り込むことから始まります。 このモジュールは、サービスモックをMountebankに投稿する `+ postImposter +`という関数を公開します。 次に、 `+ body:+`は、関数がJavaScriptオブジェクトである `+ JSON.stringify(body)+`を取ることを決定します。 このオブジェクトは、Mountebankサービスに「+ POST」するものです。 このメソッドはローカルで実行されているため、リクエストを `+ 127.0.0.1 +
( + localhost +
)に対して実行します。 fetchメソッドはパラメーターで送信されたオブジェクトを受け取り、 + POST`リクエストを
+ url i`に送信します。
このステップでは、Mountebankクライアントを作成して、新しい模擬サービスをMountebankサーバーに投稿しました。 次のステップでは、このクライアントを使用して最初の模擬サービスを作成します。
ステップ5-最初の模擬サービスの作成
前の手順では、Mountebankサーバーを作成するアプリケーションと、そのサーバーを呼び出すコードを作成しました。 次は、そのコードを使用して詐欺師または模擬サービスを作成します。
Mountebankでは、各詐欺師にはhttp://www.mbtest.org/docs/mentalModel[stubs]が含まれています。 スタブは、詐欺師が与える応答を決定する構成セットです。 スタブは、http://www.mbtest.org/docs/mentalModel [predicates_および_responses]の組み合わせにさらに分割できます。 述語は、詐欺師の応答をトリガーするルールです。 述語は、URL、リクエストコンテンツ(XMLまたはJSONを使用)、HTTPメソッドなど、さまざまな種類の情報を使用できます。
Model-View-Controller(MVC)アプリの観点から見ると、詐欺師はコントローラーとそのコントローラー内のアクションのようなスタブ。 述語は、特定のコントローラーアクションを指すルーティングルールです。
最初の模擬サービスを作成するには、 `+ hello-service.js +`というファイルを作成します。 このファイルには、模擬サービスの定義が含まれます。
テキストエディタで `+ hello-service.js +`を開きます。
nano hello-service.js
その後、次のコードを追加します。
app / src / hello-service.js
const mbHelper = require('./mountebank-helper');
const settings = require('./settings');
function addService() {
const response = { message: "hello world" }
const stubs = [
{
predicates: [ {
equals: {
method: "GET",
"path": "/"
}
}],
responses: [
{
is: {
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(response)
}
}
]
}
];
const imposter = {
port: settings.hello_service_port,
protocol: 'http',
stubs: stubs
};
return mbHelper.postImposter(imposter);
}
module.exports = { addService };
このコードは、述語と応答を含む単一のスタブを持つ詐欺師を定義します。 次に、そのオブジェクトをMountebankサーバーに送信します。 このコードは、ルートの + url`への
+ GET`リクエストをリッスンし、取得したときに `+ {message:” hello world “} +`を返す新しいモックサービスを追加します。
上記のコードが作成する `+ addService()`関数を見てみましょう。 まず、応答メッセージ「 hello world」を定義します:
const response = { message: "hello world" }
...
次に、スタブを定義します。
...
const stubs = [
{
predicates: [ {
equals: {
method: "GET",
"path": "/"
}
}],
responses: [
{
is: {
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(response)
}
}
]
}
];
...
このスタブには2つの部分があります。 述部は、ルート( + / +
)URLへの `+ GET `リクエストを探しています。 これは、誰かが模擬サービスのルートURLに「 GET 」リクエストを送信すると、「 stubs 」が応答を返すことを意味します。 スタブの2番目の部分は、 ` responses `配列です。 この場合、応答が1つあり、HTTPステータスコードが「+200」のJSON結果が返されます。
最後のステップでは、そのスタブを含む詐欺師を定義します。
...
const imposter = {
port: settings.hello_service_port,
protocol: 'http',
stubs: stubs
};
...
これは、「+ / imposters 」エンドポイントに送信して、単一のエンドポイントでサービスを模倣する詐欺師を作成するオブジェクトです。 上記のコードは、設定ファイルで決定したポートに「 port 」を設定し、「 protocol 」をHTTPに設定し、「 stubs +」を偽者のスタブとして割り当てることで、偽者を定義します。
モックサービスができたので、コードはそれをMountebankサーバーに送信します。
...
return mbHelper.postImposter(imposter);
...
前述のように、MountebankはREST APIを使用してオブジェクトを管理します。 上記のコードは、先に定義した `+ postImposter()`関数を使用して、サービスを有効にするためにサーバーに ` POST`リクエストを送信します。
`+ hello-service.js +`を終了したら、ファイルを保存して終了します。
次に、 + index.js`で新しく作成された
+ ad Service()+ `関数を呼び出します。 テキストエディターでファイルを開きます。
nano index.js
Mountebankインスタンスの作成時に関数が呼び出されるようにするには、次の強調表示された行を追加します。
app / src / index.js
const mb = require('mountebank');
const settings = require('./settings');
const helloService = require('./hello-service');
const mbServerInstance = mb.create({
port: settings.port,
pidfile: '../mb.pid',
logfile: '../mb.log',
protofile: '../protofile.json',
ipWhitelist: ['*']
});
Mountebankインスタンスが作成されると、_promise_が返されます。 約束は、後で値を決定しないオブジェクトです。 これは、非同期関数呼び出しを簡素化するために使用できます。 上記のコードでは、Mountebankサーバーが初期化されたときに、約束が解決したときに発生する `+ .then(function(){…})+`関数が実行されます。
保存して、 `+ index.js`を終了します。
Mountebankの初期化時にモックサービスが作成されることをテストするには、アプリケーションを起動します。
npm start
Node.jsプロセスはターミナルを占有するため、新しいターミナルウィンドウを開き、 `+ GET `リクエストを ` http:// localhost:5001 / +`に送信します。
curl http://localhost:5001
サービスが機能していることを示す次の応答を受け取ります。
Output{"message": "hello world"}
アプリケーションをテストしたので、最初のターミナルウィンドウに戻り、 + CTRL +
+ `+ C +`を使用してNode.jsアプリケーションを終了します。
このステップでは、最初の模擬サービスを作成しました。 これは、 + GET`リクエストに応答して
+ hello world`を返すテストサービスモックです。 このモックはデモンストレーションを目的としています。小さなExpressアプリケーションを作成しても得られなかったものは、実際には提供されません。 次のステップでは、Mountebankの機能のいくつかを活用する、より複雑なモックを作成します。
ステップ6-データ連動モックサービスの構築
前の手順で作成したサービスの種類は一部のシナリオでは問題ありませんが、ほとんどのテストではより複雑な一連の応答が必要です。 この手順では、URLからパラメーターを取得し、それを使用してCSVファイルでレコードを検索するサービスを作成します。
まず、メインの `+ app +`ディレクトリに戻ります:
cd ~/app
`+ data +`というフォルダーを作成します。
mkdir data
`+ customers.csv +`という顧客データ用のファイルを開きます。
nano data/customers.csv
次のテストデータを追加して、モックサービスに取得するものがあるようにします。
app / data / customers.csv
id,first_name,last_name,email,favorite_color
1,Erda,Birkin,[email protected],Aquamarine
2,Cherey,Endacott,[email protected],Fuscia
3,Shalom,Westoff,[email protected],Red
4,Jo,Goulborne,[email protected],Red
これは、APIモックツールhttps://mockaroo.com/[Mockaroo]によって生成される偽の顧客データであり、サービス自体の顧客テーブルにロードする偽のデータに似ています。
ファイルを保存して終了します。
次に、 `+ src `ディレクトリに ` customer-service.js +`という新しいモジュールを作成します。
nano src/customer-service.js
`+ / customers / `エンドポイントで ` GET +`リクエストをリッスンする詐欺師を作成するには、次のコードを追加します。
app / src / customer-service.js
const mbHelper = require('./mountebank-helper');
const settings = require('./settings');
function addService() {
const stubs = [
{
predicates: [{
and: [
{ equals: { method: "GET" } },
{ startsWith: { "path": "/customers/" } }
]
}],
responses: [
{
is: {
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: '{ "firstName": "${row}[first_name]", "lastName": "${row}[last_name]", "favColor": "${row}[favorite_color]" }'
},
_behaviors: {
lookup: [
{
"key": {
"from": "path",
"using": { "method": "regex", "selector": "/customers/(.*)$" },
"index": 1
},
"fromDataSource": {
"csv": {
"path": "data/customers.csv",
"keyColumn": "id"
}
},
"into": "${row}"
}
]
}
}
]
}
];
const imposter = {
port: settings.customer_service_port,
protocol: 'http',
stubs: stubs
};
return mbHelper.postImposter(imposter);
}
module.exports = { addService };
このコードは、URLフォーマットが「+ customers / <id> 」の「 GET 」リクエストを検索するサービスモックを定義します。 要求を受信すると、顧客の「 id +」のURLを照会し、CSVファイルから対応するレコードを返します。
このコードは、最後のステップで作成した `+ hello `サービスよりも多くのMountebank機能を使用します。 まず、http://www.mbtest.org/docs/mentalModel [_behaviors_]と呼ばれるMountebankの機能を使用します。 ビヘイビアは、スタブに機能を追加する方法です。 この場合、 ` lookup +`動作を使用してCSVファイルのレコードを検索します:
...
_behaviors: {
lookup: [
{
"key": {
"from": "path",
"using": { "method": "regex", "selector": "/customers/(.*)$" },
"index": 1
},
"fromDataSource": {
"csv": {
"path": "data/customers.csv",
"keyColumn": "id"
}
},
"into": "${row}"
}
]
}
...
`+ key `プロパティは正規表現を使用して着信パスを解析します。 この場合、URLで「 customers / 」の後にある「 id +」を使用しています。
`+ fromDataSource +`プロパティは、テストデータの保存に使用しているファイルを指します。
`+ into `プロパティは、結果を変数 ` $ {row} `に注入します。 その変数は、次の「 body +」セクションで参照されます。
...
is: {
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: '{ "firstName": "${row}[first_name]", "lastName": "${row}[last_name]", "favColor": "${row}[favorite_color]" }'
},
...
行変数は、応答の本文を設定するために使用されます。 この場合、顧客データを含むJSON文字列です。
ファイルを保存して終了します。
次に、 `+ index.js`を開いて、新しいサービスモックを初期化関数に追加します。
nano src/index.js
ハイライトされた行を追加します。
app / src / index.js
const mb = require('mountebank');
const settings = require('./settings');
const helloService = require('./hello-service');
const customerService = require('./customer-service');
const mbServerInstance = mb.create({
port: settings.port,
pidfile: '../mb.pid',
logfile: '../mb.log',
protofile: '../protofile.json',
ipWhitelist: ['*']
});
mbServerInstance.then(function() {
helloService.addService();
});
ファイルを保存して終了します。
次に、 `+ npm start `でMountebankを起動します。 これによりプロンプトが非表示になるため、別のターミナルウィンドウを開きます。 ` GET `リクエストを ` localhost:5002 / customers / 3 `に送信して、サービスをテストします。 これにより、「 id 」「 3+」の下の顧客情報が検索されます。
curl localhost:5002/customers/3
次の応答が表示されます。
Output{
"firstName": "Shalom",
"lastName": "Westoff",
"favColor": "Red"
}
この手順では、CSVファイルからデータを読み取り、JSON応答として返すモックサービスを作成しました。 ここから、テストする必要があるサービスに一致する、より複雑なモックを構築し続けることができます。
結論
この記事では、MountebankとNode.jsを使用して独自のサービスモックアプリケーションを作成しました。 これで、模擬サービスを構築し、チームと共有できます。 テストする必要があるベンダーサービスを含む複雑なシナリオであっても、他のチームの作業が完了するのを待っている間の単純なモックであっても、モックサービスを作成してチームを動かし続けることができます。
Mountebankの詳細については、http://www.mbtest.org/ [ドキュメント]をご覧ください。 このアプリケーションをコンテナ化する場合は、https://www.digitalocean.com/community/tutorials/containerizing-a-node-js-application-for-development-with-docker-compose [Containerizing a Node。 Docker Composeを使用した開発用のjsアプリケーション]。 本番のような環境でこのアプリケーションを実行する場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-をご覧くださいproduction-on-ubuntu-18-04 [Ubuntu 18.04で実稼働用にNode.jsアプリケーションをセットアップする方法]。