問題タブ [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 に答える
835 参照

node.js - proxyquire を使用して、サードパーティ モジュールの依存関係で require をスタブ化する

proxyquire を使用して、サードパーティのモジュールが必要とするモジュールの require をスタブしようとしています。

例:

私のモジュールには「foo」と呼ばれる 3 番目の mod が必要です。

そのモジュールは「bar」と呼ばれる別のライブラリに依存しており、bar にはモックしたい require があります。これは可能ですか?

「three」と呼ばれるサードパーティのライブラリでは:

バーライブラリで:

次に、私のテストで次のようなもの:

編集:

私が欲しいのは次のようなものだと思います:

ただし、バー ライブラリにコンソール ログを配置し、require の後に thingiwanttomock 変数が何であるかを出力すると、それは私のモック オブジェクトではありません。

バーライブラリで:

proxyquire は依存ライブラリの require ステートメントから取り込まれるものを実際に変更しますか? 多分それは私の混乱があるところです。

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

javascript - proxyquire を使用した MongoDB のモック

テストでこれを行うことにより、 proxyquireを使用してMongoDB の依存関係をモックしたいと思います。

ステートメントの前に:

そして、コントローラーに移動して console.log(mongoose.isMocked) を実行すると、未定義になり、mongoose.model.toString() を出力すると、mongoose メソッドがオーバーライドされていないように見えます。

この記事をフォローアップして、同じロジックを実装しようとしましたが、同じ結果が得られません。

どんな助けでも大歓迎です、ありがとう!

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

javascript - Node.jsでproxyquireを使用して匿名関数をモックしますか?

Node.jsでproxyquireを使用して匿名関数をモックすることは可能ですか? コンストラクターが匿名クラスであるモジュールをモックする必要があります。これをモックするためにproxyquireを使用することは可能ですか、またはこれを行う別の方法はありますか?

私がproxyquireを使用している理由は、ユニットテストを書いているファイルに「必要」なモジュールだからです。

返されるコードと関数の例は次のとおりです。

これは、config をパラメーターとして受け取る無名関数を返します。

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

javascript - Node.js でネストされたモジュールをモックしますか?

私はこれらのファイルを持っています:

File1.js

File2.js

File2 の単体テストを作成しているmod1ときに、呼び出しを行わないようにモックすることはできますmod1.someFunction()か?

0 投票する
3 に答える
1832 参照

javascript - 単体テスト用の Node モジュールのマップ パス

クライアント側では、次のように、SystemJS を使用してモジュールへのパスをスタブ化します。

require('root-components/foo');マップされapplicationRoot/rootComponents/fooます。

require('root-components/foo');問題は、 Mocha でモジュールを実行すると、ノードがそのパスの意味がわからないことです。ノードでこのパス マッピングを実現する適切な方法はありますか?

Proxyquire はこれに対応していますか? 私は彼らのドキュメントを読みましたが、それを示すものは何も見つかりませんでした.

これは単体テストのためだけなので、あらゆる種類のパーティー ユーティリティを使用したソリューションに満足しています。

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

node.js - Node.js スタブ request.get() でコールバックをすぐに呼び出す

request.get()内部で関数を呼び出す関数をテストしようとしています。
私がしようとしているのは、コールバック関数のすべてのブランチをカバーすることです。上部クロージャの変数を使用しているため、コールバック関数を別の関数に分離せずにそれを達成しようとしています。

説明する例を次に示します.. foo.js:

私はそれをsinonとproxyquireでスタブしようとしました。

foo.spec.js (sinon でスタブ化):

foo.spec.js (proxyquire でスタブ化):

どちらもうまくいきませんでした。デバッグしようとしたとき、コールバック関数にヒットしたことはありません。これは、メソッドを正しくスタブしなかったことを示唆してrequest.get()おり、まだ非同期操作になっています。両方のシナリオ(シノンとプロキシクワイア)で何が間違っていたのか、それを修正する方法の例を教えていただければ幸いです。

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

javascript - # の読み取り専用プロパティ '.js' に割り当てることはできません

I m building a application and having some troubles dealing with proxyquire and testing.

I have the following test :

import proxyquire from 'proxyquire'
const fetchMock 

I m building a application and having some troubles dealing with proxyquire and testing.

I have the following test :

That fails and throw me the following error :

Cannot asign to read only property '.js' of #

I m trying to simply test that fetch module has been called in my getAll method :

Any idea what's going wrong ?


I think you are checking only $_FILES , also check post data print_r($_POST)

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

node.js - proxyquire が元のコードを呼び出せないようにしますか?

私はマングースモデルをテストしようとしています。

私はproxyquireを使って統合的にモックしていますが、元のファイルがモデルを登録しているので、

必要なものはすべてproxyquireによってすでに注入されているため、モデルをロードしないようにするにはどうすればよいですか?

テストするコード:

モデル/Test.js:

テスト/test.js:

私が見つけた別の方法は、テストでマングースをproxyquireし、それをモックして登録を防ぐことですが、それは多くのコードになり、このモデルが4層または5層の深さで呼び出される他のテストがあるため、すべてのレベルでproxyquiring高等関数をモックすることはできますが、本当に面倒です。

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

javascript - ノード エクスプレス エンドポイントとスタブ サードパーティ API 呼び出しのテスト

次のような高速アプリがあります。

サーバー.js

posts_controller.js

post.js

spec/posts_controller_spec.js

ここでの私の目標は、thirdPartyApi.get(). proxyquireこの行を posts_controller_spec に追加してみました:

server.js ファイルは third_party_api を再度必要とするファイルであるため、これは機能しません。


コントローラーをテストするには、次のようなことができます。

この 2 番目の戦略は適切ではありません。スタブを作成する必要がreqあり、実際のインスタンスresをバイパスしているためです。app

proxyquire などを使用してこれを行う簡単な方法はありますか?