彼らはある程度のシーケンシャルにする必要があるため、私は、単語シリーズに重点を私はエクスプレスのREST API上で実行しようとしている一連のテストを持っています。私に説明してみましょう:他のモカ試験に依存してモカ試験を作成するにはどうすればよいですか?
テスト、順番に:
- APIにアクセスできるのですか?
- APIは正しく接続して認証しますか?
- 認証トークンを使用してデータストアに書き込むことはできますか?
- 認証トークンを使用して、データストアに書き込まれたばかりのデータを取得できますか?
- Authトークンを使用して、書き込まれたデータを変更することができます(別の検索で機能するかどうかテストします)。
これらの手順は、実際には順番どおりになると意味がありますが、モカは順番にテストを実行していないようです。私はステップ1を実行し、ステップ1-2を実行するテスト、ステップ1-3を実行するテストなどを行うことができますが、それは間違いなくDRYではありません。私はbefore
とafter
のチェーンを設定しようとすることもできますが、それは慣習にはあてはまりません。
は、プロセス内の連続的なステップをチェックモカテストを実行する適切な方法はありますか?私は繰り返しの試験に追加の手順を追加するこのパターンを取り除くにしようとしている
...
describe('Api',() => {
it('should be accessible', (done) => {
// Try to connect:
Api.connect((error, conn) => {
done(error);
});
});
it('should connect and authenticate properly', (done) => {
// Try to connect:
Api.connect((error, api) => {
if (error) done(error);
// Then try to authenticate:
api.authenticate(TEST_AUTH_CREDENTIALS, (error, conn) => {
done(error);
});
});
});
it('should allow for data to be written to the data store', (done) => {
// Try to connect:
Api.connect((error, api) => {
if (error) done(error);
// Then try to authenticate:
api.authenticate(TEST_AUTH_CREDENTIALS, (error, conn) => {
if (error) done(error);
// Then try to write data:
conn.write(generateTestData(), (error, res) => {
done(err);
});
});
});
});
it('should allow for written data to be read from the data store', (done) => {
// Try to connect:
Api.connect((error, api) => {
if (error) done(error);
// Then try to authenticate:
api.authenticate(TEST_AUTH_CREDENTIALS, (error, conn) => {
if (error) done(error);
let testData = generateTestData();
// Then try to write data:
conn.write(testData, (error, res) => {
if (error) done(error);
// Then try to read data:
conn.readLast((error, res) => {
if (error) done(error);
assert.equal(testData, res);
});
});
});
});
});
});
私が本当に尋ねるしようとしていることは、それぞれ前の手順の詳細手順を構築するシーケンシャルテストのパターンを回避する方法です。接続します。接続して認証します。接続して認証し、次に書き込みます。接続してからauthを書いてから、pear treeに読み込み、分枝を書いてください。私が意味することをよりよく表現するために、上記の例を追加しました。 – TheEnvironmentalist
私が何かを逃していない限り、ただしないでください。例えば。最初の2つのテストでは、テストの外にあるvarsにapiとconnを保存して、次のテストに渡すことができます。モカはそれらを順番に実行します。 – Symmetric
実際には、最後のテスト以外のすべてを削除できませんか?エラーがある場合、すでに各レベルでdone()を呼び出しています。必要に応じて、各コールレベルでさらにassert()を追加できます。 – Symmetric