問題タブ [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.
javascript - ES6で名前付きエクスポートのサブ機能をスパイする方法
名前付きエクスポートとしてエクスポートされたサブ関数をスパイしたいのですが、スパイできないようです。
add
とmultiply
inという 2 つの関数があり、operations.js
それらを名前付きエクスポートとしてエクスポートするとします。
そして、テストファイルは関数sinon-chai
をスパイしようとするために使用しadd
ます:
結果は
しかし、operations.add
次のように直接呼び出すと、テストに合格します。
sinon-spy が新しい参照を作成するように見えますoperations.add
が、multiply
関数は既にバインドされている古い参照をまだ使用しています。
これらの関数がエクスポートと名付けられている場合add
、この関数の機能をスパイする正しい方法は何ですか?multiply
一般に、テスト済みの親関数のサブ関数をスパイするにはどうすればよいですか? どちらもエクスポートと呼ばれますか?
[アップデート]
multiply
関数はほんの一例です。私の主なポイントは、親関数がサブ関数を呼び出すかどうかをテストすることです。しかし、そのテストがサブ関数の実装に依存することは望ましくありません。したがって、サブ関数が呼び出されているかどうかをスパイしたいだけです。multiply
関数は関数であり、関数はregisterMember
関数であると想像できます。(どちらの関数も exports という名前です。)add
sendEmail
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 ?
reactjs - contentEditable 要素の「onInput」でメソッドが呼び出されることを期待する
contentEditable
入力メソッドとして使用するコンポーネントがあります。関心のあるコンポーネントの部分は次のとおりです。
コンポーネントは正常に動作します -textChanged
ユーザー入力でメソッドに入ります。メソッドは次のようになります。
入力動作をテストしようとすると、直面している問題が発生します。セットアップは酵素、チャイ、シノンで行います。renderComponent
酵素のmount
メソッドを使用して、単純な関数を使用してコンポーネントをレンダリングしています。
期待される textChanged が少なくとも 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
メソッドに入っても本文は空)
node.js - Mohca テストの失敗
createStorageDocument を呼び出す debug = false の場合、storeDocument 関数をテストする必要があります。しかし、次のテスト コードでは、「TypeError: 未定義のプロパティ createStorageDocument を関数としてラップしようとしました」というエラーが表示されます。
私は何を間違っていますか?
そして、createStorageDocument自体ではなく、createStorageDocument関数内でスタブフェッチするソリューションを好むでしょう。誰かがその方法を説明できますか? 私はモカとnode.jsに非常に慣れていません
javascript - sinon を使用してコンストラクターが呼び出されたことを確認する方法
コンストラクターが sinon を使用して呼び出されたかどうかをアサートする必要があります。以下は、スパイを作成する方法です。
しかし、このコンストラクターが関連するパラメーターで呼び出されたことを確認するにはどうすればよいでしょうか? 以下は、コンストラクターが実際にどのように呼び出されるかです。
どんな助けでも大歓迎です。
以下は私が持っているコードです。
unit-testing - アロー関数をパラメーターとして使用して呼び出されるメソッドのモック
Sinon パッケージを使用して、モックする必要があるパラメーターの 1 つがアロー関数を使用して呼び出されるメソッド呼び出しをスタブ/モックするにはどうすればよいですか? 例えば
シノンのドキュメントにも、グーグル検索を数回試みた後も、何も見つかりませんでした。
node.js - n回目の呼び出しで別の関数を呼び出すためにsinonスタブを取得する方法
sinon スタブを使用して、イベント エミッターを非同期的にテストしたいと考えています。スタブが呼び出された後にコールバックを呼び出すようにします。
私stub.yields
は自分が欲しいものだと思っていましたが、そうではありませんでした。これを行うためのきちんとした方法はありますか?
現在、私はこのようなことをしています...
それは正常に動作しますが、一般化する必要があり、sinon を使用するとより効率的に実行できると考えました。しかし、シノンのドキュメントからそれを行う方法がわかりません。何か不足していますか?
Robert Klepのおかげで、ここに解決策があります...
unit-testing - 酵素: BrowserHistory 関数でテストが失敗する
私はユニットテストにかなり慣れていません。私はreact + reduxを使用しており、NotFound
ページ/コンポーネントを作成しており、その単体テストを書いています。失敗しているテストする必要がある onClick イベントがあります。
404.jsx
Test.js
これでも、エラーがスローされますCannot read property 'goBack' of undefined
前もって感謝します。