問題タブ [pex-and-moles]
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.
moles - ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
Moles固有の質問なので、この質問をします。Windows 7 64 ビットで VS2010 を実行すると、モルの VsHost がタスク マネージャーに残り、次のメッセージが表示されます。
ファイルをコピーできません 別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
解決策:タスク マネージャーでプロセスMicrosoft.Moles.VsHost.x86.exeを強制終了します。
これを非常に頻繁に行うのは非常に面倒です。msdn ソーシャル フォーラムで、この問題はいつか修正されるだろうと読みました (投稿は 2010 年のものだったと思いますが、投稿が見つかりません)。
これは、テストのデバッグを停止するたびに、またはデバッグ中にエラーが発生した場合にほぼ毎回発生します。
この問題について何か新しいことはありますか?
私はこの Typemocking がとても気に入っているので、Moles がいつか Visual Studio の標準の一部になることを切に願っています。
c# - Moles を使用して、EntityFramework 4.1 でデータベースのクエリから DbContext をモレるにはどうすればよいですか?
データベース アクセスに Entity Framework 4.1 を使用しており、次のコードを単体テストしたいと考えています。
Moles を使用してデータベースの依存関係を掘り下げていますが、行き詰まっています。Entity Framework のどのポイントから始めるべきか。
私はこの例に従っていましたが、これは LINQ-To-SQL 用です。
データベースへの呼び出しが行われる前に、どの関数をインターセプトするかを把握するために、Entity Framework をデバッグ/トレースすることも考えていました。ただし、Entity Framework 4.1 でトレースできるソース コードはないようです。ディスカッションを参照してください。
EmployeeProfiles のリストを取得できるように、DbContext でどの関数をモルアウトする必要があるかを誰かに案内してもらえますか?
moles - ジェネリックを使用してプライベート メソッドをテストするための Moles 構文のヘルプ
次のようなメソッドの署名があります: private IEnumerable BuildCustomerUpdatePlan(List localCacheChangedCustomers, List crmChangedCustomers){}
成形されたオブジェクトを見ると、メソッドの呼び出し方法とテスト方法の構文 (IntelliSense) が完全に混乱し、試してみるとコンパイル エラーが発生します。MSFT のサイトで提供されている基本的なチュートリアルを見てきましたが、Moles を使用してプライベート メソッドをテストする方法や、戻り値の型と複数のパラメーターを処理する方法がわかりません。
残念ながら、INT を吐き出して INT を受け入れる単純な Add() メソッドを使用するだけでなく、より複雑なサンプルを示す他の良い HOWTO やスレッドを見つけることができませんでした。:(
チップ?
moles - Moles Generation - 異なる名前空間の同じクラス名
この質問はもともとここで尋ねられました: http://social.msdn.microsoft.com/Forums/en-US/pex/thread/60972f1f-735a-474e-be84-40cda8006ffa?prof=required。
最近、VS2010 用の Moles をインストールしました。同じクラス (同じ名前) を持つが、名前空間が異なるアセンブリがあります。Moles は、これらのクラスの MClassName と MClassName01 などを生成することで、これを解決しています。これはローカルでうまく機能します。しかし、他の誰かが最新バージョンを取得すると、モグラが再生成され、MClassName だったものが MClassName01 になり、MClassName01 だったものが MClassName になり、すべての単体テストが再度修正されるまでビルドが失敗します。これは、誰かが最新バージョンを入手するたびに行うのは受け入れられません。解決策を提案してください。
当時の回答は、2010 年 12 月のリリースで修正される既知のバグであるというものでした。この問題は 0.94.51023.0 でまだ見られます。これはリグレッションですか、それともバグは修正されていませんか?
ありがとう
.net - ビルドサーバー上のMolesとStubs
私はチームにMolesとStubsを主に静的クラスをMoleするために使用させようとしています。私が知る必要があることの1つは、ビルドサーバーにインストールプログラムを使用してモグラとスタブをインストールする必要があるかどうかです。または、コードを使用して依存関係をデプロイし、ビルドサーバーでmoled outテストを実行することはできますか?
ありがとう!
c# - 具体的な実装を持つ抽象クラスをスタブしないように Pex に指示する方法
Pex を使用してコードをテストしようとしています。4 つの具体的な実装を持つ抽象クラスがあります。4 つの具体的な型のそれぞれに対してファクトリ メソッドを作成しました。この素晴らしいスレッドが説明しているように、Pex は抽象ファクトリ メソッドを使用せず、また使用すべきでもありません。
問題は、コードの一部が 4 つの具象型すべてに依存していることです (それ以上のサブクラスが作成される可能性は非常に低いため) が、Pex は Moles を使用してスタブを作成することでコードを壊しています。
その抽象クラスの Moles スタブを作成せずに、Pex にファクトリ メソッドの 1 つ (どれでも構いません) を使用させて抽象クラスのインスタンスを作成させるにはどうすればよいですか? PexAssume
これを達成するディレクティブはありますか?一部の具体的な型はツリー構造の型を形成することに注意してください。たとえば、ConcreteImplementation
は から派生しAbstractClass
、ConcreteImplementation
型の 2 つのプロパティを持ちますAbstractClass
。ツリーのどこにもスタブがまったく使用されていないことを確認する必要があります。(すべての具体的な実装にAbstractClass
プロパティがあるわけではありません。)
編集:
クラス構造自体がどのように機能するかについて、さらに情報を追加する必要があるようですが、目標は依然として、Pex がクラスをスタブ化しないようにする方法であることを忘れないでください。
以下は、抽象基本クラスの簡略化されたバージョンと、その 4 つの具体的な実装です。
私がテストしようとしているのはDistill
メソッドであり、ご覧のとおり、再帰的に実行できる可能性があります。このパラダイムではスタブAbstractClass
は意味がないため、アルゴリズムのロジックが壊れます。スタブ化されたクラスをテストしようとしても、例外をスローするか、それがImplementation1
. そのような特定のテスト フレームワークに対応するためにテスト対象のコードを書き直す必要はありませんが、スタブを作成しないようにテスト自体を作成することが、AbstractClass
ここで行おうとしていることです。
たとえば、私が行っていることがタイプセーフな列挙型構造とどのように異なるかが明らかであることを願っています。また、ここに投稿するためにオブジェクトを匿名化しました (ご覧のとおり)。すべてのメソッドを含めたわけではImplementation4.Equals(Implementation4)
ありません。ここで壊れていますが、実際のコードで問題が解決されます。
別の編集:
これは、ファクトリ クラスの 1 つの例です。これは、Pex で生成されたテスト プロジェクトの Factory ディレクトリにあります。
これらの具象実装のファクトリ メソッドでは、任意のコンストラクタを使用して具象実装を作成できます。この例では、useEmptyConstructor
パラメーターは使用するコンストラクターを制御します。他のファクトリ メソッドにも同様の機能があります。リンクをすぐに見つけることはできませんが、これらのファクトリメソッドを使用すると、可能なすべての構成でオブジェクトを作成できるようにする必要があることを読んだことを思い出します。
pex - PexChoose 非ジェネリック メソッド
実行時に PexChoose の戻り値の型を指定する方法はありますか? たとえば、PexChoose.Value(name, Type)?
これは、実行時の制約に応じて異なる型の値を生成する一般的なモデルを作成するのに役立ちます。
.net - 静的変数で Microsoft Moles を使用する
次のコードがあります
このコードでは、SampleClass の GetString メソッドの動作をモックしたいと考えています。しかし、そのためのモールを書いているとき、コードは静的初期化で何らかのエラーが発生したことを示す例外をスローしています。ここで問題を解決できません。エラーメッセージ:
ここでの私の疑問は、メソッドをモール化した場合、なぜデータベースの作成に行くのでしょうか? ここで何が問題なのか誰か教えてもらえますか? ありがとうアシュワニ
sharepoint-2010 - Moles が SharePoint.Behaviors for .NET v4.0 を採用するのはなぜですか?残りはすべて v3.5 です。
大規模な SP 2010 サンドボックス ソリューションの一部として、SharePoint 2010 オブジェクト モデルにアクセスする ClassLibrary があります。すべてのプロジェクトは、.NET v3.5 (クライアント プロファイルではありません) を対象としています。次に、ClassLibrary をテストするために使用される ASP.NET WebApplication プロジェクトがあります。まだ .NET v3.5 です。
SPContext.Current をモックするために Microsoft Moles を使用しようとしています。これは既に知っていて使用したことがありますが、この問題に遭遇しました。ビルドごとに、moles フレームワークは常にMicrosoft.SharePoint.Behaviors
ランタイム v4.0.30319 の DLL を順番に選択します。 MolesAssemblies にコピーします。代わりに、Microsoft.SharePoint.Moles
v2.0.50727 を選択します。
ちなみに、これらは にある DLL にすぎませんC:\Program Files\Microsoft Moles\MolesAssemblies\Microsoft.SharePoint\14.0.0.0__71e9bce111e9429c
。しかし、Moles のインストール中に、v4.0 と v3.5 の両方の Moles が作成されたことを覚えています。
Moles にランタイム v3.5 の DLL をビルドおよび/またはコピーするように指示する方法はありますか? それとも、ほくろがそれらを拾うことができるように、それらを構築して保管する特別な場所はありますか?
どういうわけか、build( ...\obj\Debug\Moles\moles.args
) 中に作成された一時オプション ファイルも調べましたが、最後のオプションは実際には/clrversion:v2.0.50727 /clrversion2 /targetframeworkversion:v3.5
.
環境: Windows 7 64 ビット、VS 2010 SP1、Moles v0.94.51023.0 - .NET v4.0.30319 (Moles のみインストール、Pex なし)。
asp.net-mvc-3 - MVC 3 を使用した Pex と Moles?
特に MVC 3 プロジェクトの場合、Pex と Moles を取得して使用するのに多くの (少しでも?) 時間を費やす価値があるかどうかについて、誰か意見があるかどうか疑問に思っていましたか?
このリンクを見つけました:
Pex/Moles は MVC で動作しますか? MVC 3 で使用した経験のある人はいますか?
Moles の次のリリース (11 月) まで待って取得する必要がありますか?