問題タブ [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.
browserify - Karma、Browserify、および Proxyquireify がエラーをスローする Vuejs の単体テスト
私はvue-cli browserifyテンプレートを使用しており、単体テストを行っています。ただし、proxyquireify を機能させることはできません。tests フォルダーを見ると、このファイルを参照してモックでテストするテストがあります。ただし、その例に従うと、次のようになります。
だから私の質問は二重だと思います。
- Vue、Browserify、および Proxyquerify を使用してセットアップを行った人はいますか
- そうでない場合、誰かが外部依存関係をモックする有効な方法を持っていますか?
テストする:
- vue-cli を介してテンプレートをインストールします
- test/unit/Hello.spec.js を編集して、次のファイルで指定されているモックされた dep を含めます。
- 走る
npm test
- エラーが表示されるはずです。
乾杯
javascript - proxyquire がメソッド呼び出しをスタブ化していない
テスト中のモジュール内のメソッド呼び出しを置き換えるために使用しようとしてproxyquire
いますが、スタブが設定されているにもかかわらず、メソッドをそのまま呼び出しています。私は何を間違っていますか?
formsReducer.test.js:
formsReducer.js:
formsHelper.getFormsByProductId
testBlueprints
を介して適切にスタブされた場合、正常に返されませんproxyquire
。私は何を間違っていますか?
javascript - モジュール内のすべての関数を置き換えない場合のproxyquire TypeError
proxyquire
Redux レデューサーの単体テストに使用しようとしています。テストで 1 つの関数の機能を置き換える必要がありますが、proxyquire's
ドキュメントによると、他の元の機能を保持する必要があります。
formsReducer.test.js:
formsReducer.js:
の機能を置き換える必要がありますformsHelper.getFormsByProductId()
が、元の機能を維持します -ブロックformsHelper.addOrRemoveMnDisclosure()
でわかるように、機能を置き換えるだけです。ただし、これを行うと、次のエラーが発生します。BabelまたはFormHelperのmyに問題があるようです。proxyquire
getFormsByProductId()
TypeError: _FormsHelper2.default.addOrRemoveMnDisclosure is not a function
export default
FormsHelper のエクスポートは次のようになります。
export default class FormsHelper { ...methods and whatnot }
.
この問題を解決するにはどうすればよいですか?
node.js - Proxyquire モジュールがファイルに加えられた変更を適切に取得していません
nmodule でテストする「file.js」に必要なファイル「config.js」にいくつかの変更を加えました。
file.js の 2 つの異なるシナリオをテストするための 2 つの descrbe メソッドを持つファイル fileTest.js を作成しました。
- config.js の currentEnv が「AAAA」の場合のテストケース
- config.js の currentEnv が「OOOO」の場合のテストケース
currentEnv "AAAA" とその作業ファイルのテスト ケースを正常に作成しました。しかし、currentEnv が「OOO」の場合にカバーされる部分は、file.js ではカバーされていません。どちらの種類のテスト ケースでも、config.js のオブジェクトをオーバーライドする必要があります。誰でもこれで私を助けることができますか?
node.js - TypeScript で require() の代わりにカスタム モジュール解決関数 ("proxyquire" など) を使用できますか?
config.ts
ノードで実行されるTypeScript ファイルがあります。
他の TypeScript ファイルでは、import
このファイルを完全なタイプ セーフで実行できます。
ここで、このスクリプトの単体テストを行います。このスクリプトrequire()
の依存関係を模倣するために、私はproxyquireを使用しています。これにより、スクリプトが を呼び出すときに取得する値を提供できますrequire()
。私のテストは次のようになります。
の代わりに使用しているため、config
変数の型が. TypeScript は、モジュール解決を実行できるように、関数に特別な処理を与える必要があります。のように、モジュールの解決も行う必要がある TypeScript コンパイラに指示する方法はありますか?any
proxyquire()
require()
require()
proxyquire()
require()
クラスとして書き直すconfig.ts
か、インターフェースを使用することができます。次に、クラス/インターフェイス定義をインポートすることにより、テストで変数を明示的に入力できます。しかし、proxyquire()
暗黙的に入力できるようにすることは、はるかに簡単な解決策です。
javascript - proxyquire with require.exports = ClassConstructor
単一のクラスをエクスポートするモジュールがある場合、どのようにモック/スタブできproxyquire
ますか?
現在、私は次のように動作しているように見えますが、かなり長く、適切に使用していませんproxyquire
:
some-class.js
my-module.js
test-my-module.js
私はモック(およびテスト)にかなり慣れていないため、明らかな何かが欠けている可能性がありますが、proxyquire
(別のライブラリを使用したり、上記のコードを記述したりする必要があるのではなく)問題自体に対処できることを望んでいました。
javascript - スタブとプロキシクワイア
proxyquire を使用した後、特定の関数を sinon でスタブ化する際に問題が発生しています。
例:
モック/スタブ化されたdoStuffではなく元のdoStuffを呼び出すため、機能していないことはわかっています。
node.js - proxyquire を使用して複数のテスト ファイル (NodeJS) に必要なモックを作成するための戦略
いくつかの API ファイルで Redis キャッシュを使用しています。つまり、テストでモックする必要がある依存関係があります。次のファイル構造があるとしましょう
* を含むファイルにredis-connection
依存関係があるとしましょう。これspec.js
を Proxyquire を使用してそれぞれでモックできます。
簡単。
その後、すべてのテストを実行すると問題が発生し、Mocha がサーバーを起動します。これらのファイルはすべて myroutes.js
に取り込まれ、Redis が実行されていないため失敗します。これを回避する方法がいくつかあります。
- proxyquire をグローバルにモックする -ドキュメントはこれを好まない。
- 私の現在の回避策は、必要な各ファイルで
redis-connection
、本物または基本的なモック if を条件付きでインポートしますprocess.env.NODE_ENV === 'test'
。次に、特定の動作が必要な場合は、このモックを関連するスペック ファイル内のより有用なモックにプロキシ要求します。複雑ですが、機能しているようです。 redis-connection
すべてのスペック ファイルで が出現するたびにモックを作成します。管理するのは恐ろしいですね。Mocha が最初にサーバーを実行するときにも機能しない可能性があります
これを回避する他の方法はありますか?この依存関係を頻繁に使用していないため、当面は回避策が機能する可能性があると思いますが、よりスケーラブルなソリューションを希望します。
ありがとう
unit-testing - 単体テスト: インポートされた TypeScript 依存関係で使用されるモック ドキュメント?
document
従来の TypeScript クラスを単体テストできるようにするには、何らかの方法でオブジェクトをモックする必要があります。このクラスは、サードパーティ モジュールのを持つ別のクラス ( View.ts
) をインポートし、次に、存在すると想定される別のものをインポートします。import
document
私の輸入チェーン:
controller.ts -> view.ts -> dragula -> crossvent -> custom-event
私が得ているエラー:
ReferenceError: ドキュメントが定義されていません
次のように、 proxyquireでモックView
を試みました。
私の問題は、ステートメントView
が原因で、が初期化される前でもエラーがポップアップすることです。import