私はいくつかのミドルウェアの単体テストを書く試みで面白いロードブロックを打ってきました。私は実行可能な手段を考え出すことができませんでした。 koaミドルウェアであるジェネレータ機能コアミドルウェア - 発電機並行性テスト
私はいくつかの設定オプションを取り、ジェネレータを返すコンストラクタ関数を持っています。このジェネレータは、要求ごとにインクリメントし、完了したときにデクリメントするクロージャを介していくつかの変数にアクセスします。ここには、私が達成しようとしていることのアイデアを提供するためのコードのサブセットがあります。簡単に言えば
module.exports = function (options = {}) {
let connections = 0;
let {
max = 100
...
} = options;
return function *() {
connections++
...
if (connections > max) {
connections--;
// callback here
}
...
}
}
は私がリクエストの最大数が満たされているコールバックを発射する複数の同時「接続」を追跡できるようにしたいです。しかし、私は戻って、この発電機の単一のインスタンスを取得し、一度だけ、単一の要求を模倣し、それを呼び出すことができます私のテストでは、したがって、私は接続を満たすことはできません>最大条件
it("Should trigger callback when max connections reached",() => {
const gen = middleware({
max: 1,
onMax: function (current, max) {
this.maxReached = true;
}
}).call(context);
gen.next();
expect(context.maxReached).to.be.true;
});