[email protected]_以降
sinon.resetHistory()を使用して、すべてのスタブの履歴をリセットできます。
再現するには
const assert = require('chai').assert;
const sinon = require('sinon');
describe('resetHistory', function() {
var num = null;
beforeEach(function() {
num = sinon.createStubInstance(Number);
});
afterEach(() => {
// Restore the default sandbox here
sinon.restore();
});
describe('called on individual stub method', function() {
it('should clear "called" status on stub', function() {
num.toFixed();
assert.isTrue(num.toFixed.called);
num.toFixed.resetHistory();
assert.isFalse(num.toFixed.called);
});
});
describe('called on module', function() {
it('should clear "called" status on all stubs', function() {
num.toFixed();
assert.isTrue(num.toFixed.called);
sinon.resetHistory();
assert.isFalse(num.toFixed.called);
});
});
});
実績
2番目のテストは失敗します:
「モジュールで呼び出されました:すべてのスタブで「呼び出された」ステータスをクリアする必要があります:❌。 [assert.isFalse] trueはfalseであると予想されます ""
期待される結果
すべてのテストに合格
zipファイルの内容で問題を更新し、実行可能なRunKitデモとして追加して、機能することを確認しました。
バグ修正を手伝いたい
@rpgeeganageやってください! これが私たちのスタートガイドです
このコメントは機能要求のようなものだと思いますが、「スタブインスタンス」オブジェクトに独自のresetHistory()
(およびresetBehavior()
とreset()
)メソッドがあると便利です。サンドボックス全体をヒットする必要はありません。
@mcow試しましたか? 😄スタブには、Sinonのバージョン2以降にこれらの機能があります。 サンドボックスの追加ははるかに最近のものです。
@ fatso83 、
どうもありがとう。 これに取り組みます。
@ fatso83スタブメソッドにはその機能があります。 「スタブインスタンス」オブジェクト、 createStubInstance()
呼び出しの結果(お粗末な用語はシノンのものです、誤解について私を責めないでください)はそうではありません。
@ fatso83 、
sinon.resetHistory
とsinon.createStubInstance
の実装を調べました。
私が気付いたのは、 sinon.createStubInstance
はsandbox
の実装を使用していませんが、 sinon.resetHistory
はsandbox
実装を使用しているということです。 sinon.resetHistory
では、 collection
は常に空です。 深く掘り下げます。
@mcowああ、それは物事を説明します。 _instance_ビットに気づきませんでした:)うまくいけば、 @ rpgeeganageの詳細が実りあるものを
@ fatso83 、この問題の変更はマスターにマージされるため、この問題を解決する必要がありますか?
鋭敏な観察者のためのTG😄