問題タブ [sinon-chai]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1965 参照

javascript - ES6で名前付きエクスポートのサブ機能をスパイする方法

名前付きエクスポートとしてエクスポートされたサブ関数をスパイしたいのですが、スパイできないようです。

addmultiplyinという 2 つの関数があり、operations.jsそれらを名前付きエクスポートとしてエクスポートするとします。

そして、テストファイルは関数sinon-chaiをスパイしようとするために使用しaddます:

結果は

しかし、operations.add次のように直接呼び出すと、テストに合格します。

sinon-spy が新しい参照を作成するように見えますoperations.addが、multiply関数は既にバインドされている古い参照をまだ使用しています。

これらの関数がエクスポートと名付けられている場合add、この関数の機能をスパイする正しい方法は何ですか?multiply

一般に、テスト済みの親関数のサブ関数をスパイするにはどうすればよいですか? どちらもエクスポートと呼ばれますか?

[アップデート]

multiply関数はほんの一例です。私の主なポイントは、親関数がサブ関数を呼び出すかどうかをテストすることです。しかし、そのテストがサブ関数の実装に依存することは望ましくありません。したがって、サブ関数が呼び出されているかどうかをスパイしたいだけです。multiply関数は関数であり、関数はregisterMember関数であると想像できます。(どちらの関数も exports という名前です。)addsendEmail

0 投票する
1 に答える
527 参照

typescript - How to expose a module (sinon, chai) as global variables with correct types?

In Js tests, mocha, chai and sinon are commonly exposed as global variables to save some import, usually via karma plugins.

Installing mocha typings goes well, mocha describe, it... are correctly exposed as global variables with correct types.

However, trying to also expose chai and sinon typings as global vars (typings i --global --save-dev sinon) yields me a :

typings ERR! message Attempted to compile "sinon" as a global module, but it looks like an external module.`

I tried to write a typings file myself, but I don't have access to those libs typings (import ?)...

Is it possible ? How should I do it ? And will it work with sinon-chai ?

0 投票する
2 に答える
799 参照

reactjs - contentEditable 要素の「onInput」でメソッドが呼び出されることを期待する

contentEditable入力メソッドとして使用するコンポーネントがあります。関心のあるコンポーネントの部分は次のとおりです。

コンポーネントは正常に動作します -textChangedユーザー入力でメソッドに入ります。メソッドは次のようになります。

入力動作をテストしようとすると、直面している問題が発生します。セットアップは酵素チャイシノンで行います。renderComponent酵素のmountメソッドを使用して、単純な関数を使用してコンポーネントをレンダリングしています。

期待される te​​xtChanged が少なくとも 1 回呼び出されたことが出力されますが、呼び出されたことはありません。ただし、奇妙な部分console.logは、コンポーネントのメソッド内に a を配置すると、そこに到達することです。

私がそれを機能させるために試したこと

  • sinon.stubの代わりに使用spyしてください。メソッドの何かが正しく機能しない可能性があるためです。
  • view.find('.user-input').simulate('input', {target: {value: "lorem"})またはで呼び出す.simulate('input', {key: 'a'})

入力をシミュレートする代わりに を実行するviewReact.textChanged()と、明らかに機能します。

これを引き起こしているのは contentEditable の入力メソッドだと思います。助言がありますか?onInputメソッドにテキストを正しく入力するにはどうすればよいですか? (textChangedメソッドに入っても本文は空)

0 投票する
1 に答える
45 参照

node.js - Mohca テストの失敗

createStorageDocument を呼び出す debug = false の場合、storeDocument 関数をテストする必要があります。しかし、次のテスト コードでは、「TypeError: 未定義のプロパティ createStorageDocument を関数としてラップしようとしました」というエラーが表示されます。

私は何を間違っていますか?

そして、createStorageDocument自体ではなく、createStorageDocument関数内でスタブフェッチするソリューションを好むでしょう。誰かがその方法を説明できますか? 私はモカとnode.jsに非常に慣れていません

0 投票する
2 に答える
1580 参照

javascript - sinon を使用してコンストラクターが呼び出されたことを確認する方法

コンストラクターが sinon を使用して呼び出されたかどうかをアサートする必要があります。以下は、スパイを作成する方法です。

しかし、このコンストラクターが関連するパラメーターで呼び出されたことを確認するにはどうすればよいでしょうか? 以下は、コンストラクターが実際にどのように呼び出されるかです。

どんな助けでも大歓迎です。

以下は私が持っているコードです。

0 投票する
1 に答える
1031 参照

unit-testing - アロー関数をパラメーターとして使用して呼び出されるメソッドのモック

Sinon パッケージを使用して、モックする必要があるパラメーターの 1 つがアロー関数を使用して呼び出されるメソッド呼び出しをスタブ/モックするにはどうすればよいですか? 例えば

シノンのドキュメントにも、グーグル検索を数回試みた後も、何も見つかりませんでした。

0 投票する
1 に答える
889 参照

node.js - n回目の呼び出しで別の関数を呼び出すためにsinonスタブを取得する方法

sinon スタブを使用して、イベント エミッターを非同期的にテストしたいと考えています。スタブが呼び出された後にコールバックを呼び出すようにします。

stub.yieldsは自分が欲しいものだと思っていましたが、そうではありませんでした。これを行うためのきちんとした方法はありますか?

現在、私はこのようなことをしています...

それは正常に動作しますが、一般化する必要があり、sinon を使用するとより効率的に実行できると考えました。しかし、シノンのドキュメントからそれを行う方法がわかりません。何か不足していますか?


Robert Klepのおかげで、ここに解決策があります...

0 投票する
2 に答える
966 参照

unit-testing - 酵素: BrowserHistory 関数でテストが失敗する

私はユニットテストにかなり慣れていません。私はreact + reduxを使用しており、NotFoundページ/コンポーネントを作成しており、その単体テストを書いています。失敗しているテストする必要がある onClick イベントがあります。

404.jsx

Test.js

これでも、エラーがスローされますCannot read property 'goBack' of undefined

前もって感謝します。