問題タブ [nmock]

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

c# - NMock2.0とNMock2の違い

どのバージョンのNMock2を使用すべきかについて少し混乱しています。私がここから得たもの:私がしばらく使っていたもの:

http://www.nmock.org/download.html

ファイル名は、バージョン2.0.0.44のNMock2.dllです。

ジェネリック関数を含むインターフェースをモックできないという問題に遭遇しました。グーグルで簡単に検索したところ、NMock2はジェネリック関数とのモックインターフェイスをサポートしていることがわかりました。

ここから別のNMock2を使用する必要がありました。

http://sourceforge.net/projects/nmock2/

このバージョン(NMock.dll 2.1.3641.19651)は、実際にジェネリック関数とのインターフェイスをサポートしており、他のバージョンとほとんど互換性があります。これまでのところ、関数には微妙な違いがあることがわかりましWill()た。関数がないvoid場合は、に渡す必要がReturn.Value(something)ありますWill()

ここで問題にいくつかの光が当てられました:

http://codelog.blogial.com/2009/08/19/using-nmock2-in-c/#comment-4355

最新かつ最高のNMock2をご覧になりたい場合は、 http: //sourceforge.net/projects/nmock2にアクセスしてください。名前に2が含まれているもの。

nmockサイトのバージョン(残念ながら、私たちの管理下にはありません)はもう維持されていません。

したがって、質問は次のとおりです。後者のNMock2(2.1)はNMock 2.0の次のバージョンであり、(現在サポートされている唯一のnmockであるという点で)合法であり、nmock.orgにあるものの代わりにそれを使用する必要があります。 ?

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

mocking - ヘルプを嘲笑しますか?何が問題なのかわかりません

次のように定義されたインターフェイスがあります。

私がやろうとすると: Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); 次のエラーが表示されます:

System.TypeLoadException: System.TypeLoadException: メソッド実装の本体と宣言の署名が一致しません

なにが問題ですか?(私は nmock2 で Visual Studio 2008 を使用しています) 回答をお願いします。これをすぐに終わらせなければなりません。ありがとう、ルイーザ

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

tdd - NMock2.0 - 非インターフェイス呼び出しをスタブする方法は?

完全なコード カバレッジを持ち、DI を使用してすべての作業を行うメイン クラス関数 (Job.Run) のすべてのロジックをモック アウトするクラス API があります。

データ入力フィールドの 1 つでいくつかの検証を行っていないという生産上のバグを見つけました。

そこで、ValidateFoo() というスタブ関数を追加しました... この関数に対して単体テストを作成して、JobFailedException を期待し、テストを実行しました。その関数が空だったため、明らかに失敗しました。検証ロジックを追加したところ、テストに合格しました。

これで、検証が機能することがわかりました。問題は、ValidateFoo() が Job.Run() 内で実際に呼び出されることを確認するテストをどのように作成するかです。ValidateFoo() は Job クラスのプライベート メソッドであるため、インターフェイスではありません...

NMock2.0でこれを行う方法はありますか? TypeMock が非インターフェース型の偽物をサポートしていることは知っています。しかし、モック ライブラリを今すぐ変更することはできません。この時点で NMock がサポートできない場合は、単に ValidateFoo() 呼び出しを Run() メソッドに追加して手動でテストするだけです。現在、100% のカバレッジ。何かアドバイス?どうもありがとうございました。

編集: 私が念頭に置いているもう 1 つのオプションは、Job.Run 機能の統合テストを作成することです (モックの代わりに複合オブジェクトの真の実装を注入します)。そのフィールドに不適切な入力値を与えてから、ジョブが失敗したことを検証します。これは機能し、私のテストをカバーします - しかし、それは実際には単体テストではなく、機能の 1 つの単位をテストする統合テストです....うーん..

EDIT2:これを行う方法はありますか?誰にもアイデアがありますか?多分 TypeMock - またはより良いデザインですか?

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

c# - 具象クラスでプライベートメソッドをアサートする方法は(TypeMock / NMock / etc ..)と呼ばれますか?

以下のクラスの「IsUnique」関数の単体テストを次のように記述しようとしています。

ここでテストしたいのは、ValidateStuffExistsとCheckUniquenessが呼び出され、引数が渡されることだけです。この関数が行うのはこれだけなので、テストするのはこれだけです(「パブリック動作のみをテストする」という疑似ルールを曲げて、ここでプライベートメソッドをテストします。これは、1つの大きな複雑なメソッド/テストまたは2つのプライベートテストがあるためです。メソッド)。

私はどんなモックライブラリにも門戸を開いています。私はNMockを使用していて、それがタスクに適しているとは思いませんでした-読んだ後、TypeMockをダウンロードしました。これが最高であり、具体的なクラスや非インターフェイスメソッドの呼び出しでさえもモックアウトできると聞きました...

私はテストでこのようなことをしていますが、「Isolate.WhenCalled」行で例外がスローされます。

これにより、 「***WhenCalledはメソッド呼び出しを引数として使用することをサポートしていません」のような例外がスローされます。

CLRクラスでも同じことができますが、DateTimeをモックアウトできます。これを実行すると(コードは機能します):

ここで何かアドバイスはありますか?これらの2つのメソッドを別々のクラスに分割し、インターフェイスを作成する必要がありますか?または私の方法/テストを複雑にしますか?ここに欠けているものがあるに違いありません...事前に助けてくれてありがとう。

編集:私は1つのユニットテストのためにクラスの2つのプライベートメソッドをモックアウトしようとしていると思います。これらの2つのメソッドを別々のクラス/インターフェイスに分割せずにこれを行うにはどうすればよいですか?

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

c# - nMoqを使用すると、特定のイベントにどのように期待できますか?

このテトリスゲームを持っているユニットテストを作成し、ゲームを開始して何もせず、ゲームが終了するのを待ちたいとしましょう(つまり、GameOverイベントを取得します)。

どのようにテストを行う必要がありますか?これはおそらく簡単なはずですが、私にはそれを行う方法がわかりません。私の唯一のアイデアは、次のような形になります。

ありがとう

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

.net - NMock2 を使用して内部インターフェイスをモックするにはどうすればよいですか?

これを試してみると、例外が発生します。

インターフェイスを公開することは、受け入れられる解決策ではありません。テストのために API の可視性を変更したくありません。

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

c# - NMock - 同じ引数の型を持つメソッドが異なる値を返すようにする方法は?

私はこのような方法を持っています:

私のモックオブジェクトはこのように作成されます

上記のコードの問題は、常に最初のモック メソッドのパラメーターを取得し、"good" を返すことです。NMock が異なる引数値を持つ同じメソッドに対して異なる値を返すようにするにはどうすればよいですか? 助けてください!!

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

c# - WPFおよびディスパッチャーに対するNMockの問題のテスト

これは、そこにある糸脱毛中毒者のためのものです。私はこの方法を持っています:

これは、WPFユーザーコントロールで定義されています。MeltsAvailableは、MeltDtosのObservableCollectionです。このコードは、アプリケーション自体で実行すると美しく機能します。

問題は、このメソッドの結果を検証するために、NMockを使用して単体テストを作成したいということです。具体的には、一度呼び出されると、MeltsAvailableプロパティにいくつかの項目があります。テスト方法は次のとおりです。

テストは、最初のAssert.AreEqualで一貫して失敗します。その時点でvm.MeltsAvailableは空です。

私がすべての糸を取り除き、それをそのままにしておくと:

テストに合格します。

したがって、明らかに、スレッドには気に入らない点がありますが、[デバッグ]->[例外]->[CLR例外]->[スロー]をオンにし、[マイコードのみ]をオフにしても、RefreshMeltsでは例外はまったく発生しません。

最も奇妙な部分は、MeltDtoオブジェクトをMeltsAvailableコレクションにロードするDispatcher.Invoke呼び出しが呼び出されていないように見えることです。セクション全体をブレークポイントで覆うことができますが、ブレークポイントがヒットすることはありません。私のテストでThread.Sleep時間を10秒まで上げても、何も変わりません。

なんで?そのセクションが実行されないのはなぜですか、ステップインまたはブレークできないのはなぜですか、例外が発生しないのはなぜですか、実行では正常に機能するのにテストでは機能しないのはなぜですか?

どうもありがとう、スティーブ

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

c# - NUnit と NMock2 のマッチャーを混在させるときのあいまいな参照

単体テストとモックには NUnit (2.5.9) と NMock2 を使用しています。ただし、どちらにも密接に対応するマッチャー構文があります。私がする時

その後、次の NMock2 コードで:

また、NUnit アサーション:

次に、VS (2008) は、'Is' が 'NUnit.Framework.Is' と 'NMock2.Is' の間のあいまいな参照であると文句を言います('Has' についても同じです)。

これを回避する方法はありますか?いずれにせよ、どちらのマッチャーも同様の機能を持っているようです。もちろん、各マッチャー クラスの前に完全な名前空間を付けることは機能しますが、テストが大幅に読みにくくなります。

この問題について Google で検索してもまったく一致するものは見つからなかったので、私は非常にばかげたことをしているような気がします。

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

c# - NMock を使用した条件付きモック

誰かが私の問題で私を助けることができるのだろうか. 条件付きモックを実行できるメソッドをスタブする必要があります。要するに、呼び出されるタイミングに応じて、同じクラスの異なるオブジェクトを返すスタブ関数が好きです。

例えば

  1. 最初のコール リターン Obj1
  2. 2 番目のコール リターン Obj3
  3. 3 番目のコール リターン Obj7

...

NMockでこれを行う方法を知っている人はいますか?