問題タブ [proxyquire]

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 投票する
0 に答える
243 参照

browserify - Karma、Browserify、および Proxyquireify がエラーをスローする Vuejs の単体テスト

私はvue-cli browserifyテンプレートを使用しており、単体テストを行っています。ただし、proxyquireify を機能させることはできません。tests フォルダーを見ると、このファイルを参照してモックでテストするテストがあります。ただし、その例に従うと、次のようになります。

だから私の質問は二重だと思います。

  1. Vue、Browserify、および Proxyquerify を使用してセットアップを行った人はいますか
  2. そうでない場合、誰かが外部依存関係をモックする有効な方法を持っていますか?

テストする:

  1. vue-cli を介してテンプレートをインストールします
  2. test/unit/Hello.spec.js を編集して、次のファイルで指定されているモックされた dep を含めます。
  3. 走るnpm test
  4. エラーが表示されるはずです。

乾杯

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

javascript - proxyquire がメソッド呼び出しをスタブ化していない

テスト中のモジュール内のメソッド呼び出しを置き換えるために使用しようとしてproxyquireいますが、スタブが設定されているにもかかわらず、メソッドをそのまま呼び出しています。私は何を間違っていますか?

formsReducer.test.js:

formsReducer.js:

formsHelper.getFormsByProductIdtestBlueprintsを介して適切にスタブされた場合、正常に返されませんproxyquire。私は何を間違っていますか?

0 投票する
0 に答える
157 参照

javascript - モジュール内のすべての関数を置き換えない場合のproxyquire TypeError

proxyquireRedux レデューサーの単体テストに使用しようとしています。テストで 1 つの関数の機能を置き換える必要がありますが、proxyquire'sドキュメントによると、他の元の機能を保持する必要があります。

formsReducer.test.js:

formsReducer.js:

の機能を置き換える必要がありますformsHelper.getFormsByProductId()が、元の機能を維持します -ブロックformsHelper.addOrRemoveMnDisclosure()でわかるように、機能を置き換えるだけです。ただし、これを行うと、次のエラーが発生します。BabelまたはFormHelperのmyに問題があるようです。proxyquiregetFormsByProductId()TypeError: _FormsHelper2.default.addOrRemoveMnDisclosure is not a functionexport default

FormsHelper のエクスポートは次のようになります。

export default class FormsHelper { ...methods and whatnot }.

この問題を解決するにはどうすればよいですか?

0 投票する
0 に答える
162 参照

node.js - Proxyquire モジュールがファイルに加えられた変更を適切に取得していません

nmodule でテストする「file.js」に必要なファイル「config.js」にいくつかの変更を加えました。

file.js の 2 つの異なるシナリオをテストするための 2 つの descrbe メソッドを持つファイル fileTest.js を作成しました。

  1. config.js の currentEnv が「AAAA」の場合のテストケース
  2. config.js の currentEnv が「OOOO」の場合のテストケース

currentEnv "AAAA" とその作業ファイルのテスト ケースを正常に作成しました。しかし、currentEnv が「OOO」の場合にカバーされる部分は、file.js ではカバーされていません。どちらの種類のテスト ケースでも、config.js のオブジェクトをオーバーライドする必要があります。誰でもこれで私を助けることができますか?

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

node.js - TypeScript で require() の代わりにカスタム モジュール解決関数 ("proxyquire" など) を使用できますか?

config.tsノードで実行されるTypeScript ファイルがあります。

他の TypeScript ファイルでは、importこのファイルを完全なタイプ セーフで実行できます。

ここで、このスクリプトの単体テストを行います。このスクリプトrequire()の依存関係を模倣するために、私はproxyquireを使用しています。これにより、スクリプトが を呼び出すときに取得する値を提供できますrequire()。私のテストは次のようになります。

の代わりに使用しているため、config変数の型が. TypeScript は、モジュール解決を実行できるように、関数に特別な処理を与える必要があります。のように、モジュールの解決も行う必要がある TypeScript コンパイラに指示する方法はありますか?anyproxyquire()require()require()proxyquire()require()

クラスとして書き直すconfig.tsか、インターフェースを使用することができます。次に、クラス/インターフェイス定義をインポートすることにより、テストで変数を明示的に入力できます。しかし、proxyquire()暗黙的に入力できるようにすることは、はるかに簡単な解決策です。

0 投票する
0 に答える
353 参照

javascript - proxyquire with require.exports = ClassConstructor

単一のクラスをエクスポートするモジュールがある場合、どのようにモック/スタブできproxyquireますか?

現在、私は次のように動作しているように見えますが、かなり長く、適切に使用していませんproxyquire:

some-class.js

my-module.js

test-my-module.js

私はモック(およびテスト)にかなり慣れていないため、明らかな何かが欠けている可能性がありますが、proxyquire(別のライブラリを使用したり、上記のコードを記述したりする必要があるのではなく)問題自体に対処できることを望んでいました。

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

javascript - スタブとプロキシクワイア

proxyquire を使用した後、特定の関数を sinon でスタブ化する際に問題が発生しています。

例:

モック/スタブ化されたdoStuffではなく元のdoStuffを呼び出すため、機能していないことはわかっています。

0 投票する
0 に答える
535 参照

node.js - proxyquire を使用して複数のテスト ファイル (NodeJS) に必要なモックを作成するための戦略

いくつかの API ファイルで Redis キャッシュを使用しています。つまり、テストでモックする必要がある依存関係があります。次のファイル構造があるとしましょう

* を含むファイルにredis-connection依存関係があるとしましょう。これspec.jsを Proxyquire を使用してそれぞれでモックできます。

簡単。

その後、すべてのテストを実行すると問題が発生し、Mocha がサーバーを起動します。これらのファイルはすべて myroutes.jsに取り込まれ、Redis が実行されていないため失敗します。これを回避する方法がいくつかあります。

  1. proxyquire をグローバルにモックする -ドキュメントはこれを好まない。
  2. 私の現在の回避策は、必要な各ファイルでredis-connection、本物または基本的なモック if を条件付きでインポートしますprocess.env.NODE_ENV === 'test'。次に、特定の動作が必要な場合は、このモックを関連するスペック ファイル内のより有用なモックにプロキシ要求します。複雑ですが、機能しているようです。
  3. redis-connectionすべてのスペック ファイルで が出現するたびにモックを作成します。管理するのは恐ろしいですね。Mocha が最初にサーバーを実行するときにも機能しない可能性があります

これを回避する他の方法はありますか?この依存関係を頻繁に使用していないため、当面は回避策が機能する可能性があると思いますが、よりスケーラブルなソリューションを希望します。

ありがとう

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

unit-testing - 単体テスト: インポートされた TypeScript 依存関係で使用されるモック ドキュメント?

document従来の TypeScript クラスを単体テストできるようにするには、何らかの方法でオブジェクトをモックする必要があります。このクラスは、サードパーティ モジュールのを持つ別のクラス ( View.ts) をインポートし、次に、存在すると想定される別のものをインポートします。importdocument

私の輸入チェーン:

controller.ts -> view.ts -> dragula -> crossvent -> custom-event

私が得ているエラー:

ReferenceError: ドキュメントが定義されていません

次のように、 proxyquireでモックViewを試みました。

私の問題は、ステートメントViewが原因で、が初期化される前でもエラーがポップアップすることです。import