問題タブ [shim]
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.
c# - Process.Start で Microsoft Fakes アセンブリを使用する方法
System.Diagnostics.Process.Start呼び出しをモックしたいので、システムアセンブリに Fakes アセンブリを追加しました。
問題は、StartがSystem.Diagnostics.Processの静的メソッドであるため、Start メソッドのデリゲートをホックできるシムを取得していないことです。
これを行う正しい方法は何ですか?
javascript - 私が使用している IE9 で classList shim が機能しないのはなぜですか?
私は小さな地図ロケーターでclassList.addとを使用しています。classList.remove(className は SVG 要素では正しく機能しないため、そうしなければならないようです。) codepen の JS の 184 行目と 194 行目で、それらをどのように使用しているかを確認できます。IE9 は classList をサポートしていないため、さまざまなシム ( one、two、three )を試しました。
私のコードではIE9で動作するようには見えません。それらは、1行または2行のコードのみでテストフィドルにロードすると機能しますが、存在する完全なものでは機能しません(そして、まだオブジェクト指向の優れたものにリファクタリングしていないため、かなりひどいです) .
私が最初に考えたのは、DOM要素をjQuery().get(). しかし、IE9 コンソールでは実行できますdocument.getElementByIdが、同じように失敗します。
ここで実際に何が起こっているのですか?
css - 他のブラウザの `-moz-element` と同等ですか?
Windows Aero や iOS7 のような不透明ぼかしオーバーレイを作成したいと考えています。残念ながら、filter: blur()またはfilter: url(#svgBlur)プロパティは要素にのみ適用でき、その背後にあるコンテンツには適用できません。
これを回避するには、ぼやけた背景のコピーが必要です。background: -moz-element(#elementId)これは、実験的な CSS プロパティを使用する FX で可能です。それを使用して、 FXのみで必要な効果を得ることができます。
ぼやけの問題を解決するには他にも 質問があり、 1 つの解決策はhtml2Canvasプラグインを使用することです。
ただし、手動で再作成されたスタイルなどを含む、ぼやけたコンテンツ全体を再作成しています。これは非常に印象的な作業ですが、この種の効果としては (パフォーマンスとサイズの両方で) やり過ぎのように思えます。
私がやりたいのは、 のためだけのある種のシムを作成することです-moz-element。SVG を使用して可能であるforeignObjectように見えますが、セキュリティ上の問題があり、HTML が有効な XML でない場合は失敗します。
-moz-elementオーバーレイされた領域全体を解析/再描画する必要がない (キャンバス、SVG、または他の何かを使用して) エミュレートする方法はありますか?
c# - Shim の使用を避けるためにリファクタリングする方法は?
私は単体テストを始めたばかりで、Microsoft Fakes フレームワークを調べています。主な理由は、無料であり、Emulators パッケージを使用して SharePoint オブジェクトを簡単にモックできるからです。SOや他の場所で、シムが悪であるというさまざまな言及を見てきましたが、その理由は多かれ少なかれ理解しています. 私が得られないのは、特定のケースでそれらを回避する方法です。つまり、「シムを使用する必要がないようにコードをリファクタリングするにはどうすればよいですか?」ということです。
問題のコードでは、プロパティとメソッドを持つ JobProcessor オブジェクトがあり、そのうちのいくつかは public Execute メソッドからのみ呼び出す必要があるため、プライベートです。Execute が呼び出され、追加のロギングを行う必要があるため、その Process メソッドが呼び出されるジョブが利用可能であることをテストしたいと思います。
関連するコードは次のとおりです。
ProcessJob がテストから呼び出された場合、追加の処理を実行する必要があるため、これらの追加処理を実行するためにテスト メソッドにスタブを設定します。
私は別の場所で ProcessJob メソッド自体をテストしているので、ここで余分なものを実行する以外は気にしません。理解したところで、JobProcessor (テスト対象のシステム) からのプライベート メソッド GetJobsToProcess が偽のジョブを返すように Shim を設定する必要があります。これにより、スタブ メソッドが呼び出されます。
この場合、Shim を使用しないようにするにはどうすればよいですか? それは問題ですか?
ありがとう。
c# - シムメソッドからオリジナルメソッドを呼び出す
BCL 内の型のメンバー (またはそのことについては任意のライブラリ) の shim を作成するとき。オーバーライドした元のメソッド (shim デリゲートの内部または外部) を呼び出したい状況によく直面します。例えば:
上記のコードでは、DateTime.Now が呼び出されたときに実行したいことは、実際の日付よりも 1 日少ない日付を返すことだけです。多分これは不自然な例のように見えるので、他の (より) 現実的なシナリオは
- 特定のメソッドに渡される引数値をキャプチャして検証できるようにするため。
- テスト対象のコードが特定のメソッド/プロパティにアクセスした回数をカウントできるようにするため。
私は実際のアプリケーションで最後のシナリオに直面しましたが、SO で Fakes の答えを見つけることができませんでした。ただし、 Fakes のドキュメントを掘り下げた後、答えを見つけたので、コミュニティへの質問と一緒に投稿しました。
javascript - プロトタイプなしの Array.indexOf shim
可能な場合はネイティブ関数を利用して、配列と一致する値を取るユニバーサルな indexOf shim 関数とは何ですか?
c++ - Visual Studio でテストするときに標準の C++ 関数をオーバーライドする方法は?
Visual Studio 2013 単体テストを使用しています。私のコードはtime()関数を使用していくつかのオブジェクト名を生成しているため、テスト時に一貫した動作を保証することは困難です。
C# の場合は、記事http://msdn.microsoft.com/en-us/library/hh549175.aspxの「シムの使用を開始する」セクションに示されているように、シムを使用できます。
time()C++ 単体テスト中に呼び出しを再定義する方法はありますか?
javascript - browserify を使用して jQuery プラグインをシム処理する
こんにちは、grunt browserify タスクを使用してコードをセットアップしています。jQuery で shimmed し、jquery.tablesorter を含めようとしています。
この方法でjqueryプラグインをbrowserifyで使用できますか?