問題タブ [moq]
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# - Moq を使用してメソッドが呼び出されたかどうかを判断する
より高いレベルのメソッドを呼び出すと、メソッド呼び出しが発生することをテストできると理解しています。つまり、
私が呼び出すとSomeMethod()
、それが呼び出されることを期待してテストしたいと思いSomeOtherMethod()
ます。
この種のテストがモック フレームワークで利用できると考えるのは正しいですか?
unit-testing - クラスまたはインターフェースのMoq化の違いは何ですか?
私は単体テストでmoqを使用してオブジェクトをモックしてきましたが、moq に関するサイトで、クラスとインターフェイスの両方をモックできることを見てきました。
先日、同僚の 1 人と話し合ったところ、クラスをモックする理由はなく、インターフェイスのみをモックする必要があるとのことでした。
私はそれに対する答えを本当に持っていませんでした....そして、moqサイトでも答えが見つからないようです。
クラスを決してモックしてはいけないというのは本当ですか? それが本当なら、Moqはそれを許可しないので、私はノーと言います....それでは、インターフェースを介してクラスをモックする方が良い時がありますか? クラスのモックとインターフェイスのモックの違いは何ですか? それとも本当に単なる好みの問題ですか?
unit-testing - It.Is で ExpectSet() を使用した Moq テスト() は期待どおりに動作していません...
この動作を次のテスト ケースに分離しました。プロパティに設定されたプロパティを期待/検証する方法を教えてくれる人に感謝します-現在、私にはあまり意味をなさないList<T>
内部で何かが起こっているようです. It.Is<T>(predicate)
サンプル コードは VS2008 からコンソール アプリとして実行されます - Moq 2.6 への参照を追加する必要があります (私は 2.6.1014.1 を使用しています) - 何が起こっているかを確認するには、さまざまな ExpectSet ステートメントのコメントを外してみてください...
c# - 保護された抽象メソッドが Moq を使用して呼び出されていることを確認する
次のクラスがあるとします。
クラスもあります
私は Moq を使用しており、BaseMethod() を呼び出して runMethod1 が true のときに ChildMethod1() が呼び出されていることを確認するテストを書きたいと思います。Moq を使用して TestBase の実装を作成し、BaseMethod() を呼び出して、Moq 実装で ChildMethod が呼び出されたことを確認することは可能ですか?
c# - moqに問題がある
私はmoqを試していますが、次のテスト本体で問題が発生しています:
これはスローします:
System.ArgumentException: オーバーライドできないメンバーに対する無効な期待: p => p.Children.Contains(value(ZooCms.Core.Tests.Model.ZooNodeTest+<>c__DisplayClass0).child.Object)。
moqかどうかはよくわかりませんが、テストしているコードはかなり単純です。それが問題かどうかはわかりませんが、ZooNode は抽象クラスです。
前もって感謝します。
編集
ダリンの応答から提案された改訂後のコードを次に示します。
それは今スローします
テスト メソッド ZooCms.Core.Tests.Model.ZooNodeTest.TestSetParentAddsNodeToParentNodeList が例外をスローしました: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません..
c# - Rhino.MocksとMoqが、Barはオーバーライドできないメンバーであると言うのはなぜですか?
最新バージョンのMoqとRhino.Mocksフレームワークを使用した両方のテストが、Barが仮想/オーバーライド可能なメソッドではないと不平を言って失敗する理由を誰かが説明できますか?
Barメソッドを仮想として宣言すると、両方のテストに合格します。Barを仮想として宣言する必要がある理由がわかりません。すでに仮想ではありませんか?それはインターフェースから来ています。
c# - この NUnit+Moq テストが失敗するのはなぜですか?
見えないのでわかると思います。このテストが達成しようとしていることを達成する方法を理解している人には、ボーナス ポイントがあります。
unit-testing - Moq:モックオブジェクトのメソッドが実行されていないことをアサートする方法は?
モックされたオブジェクトのメソッドが正しいパラメーターで呼び出され、正しい結果を返すことをテストするモックが機能しています。
ここで、別の条件を確認したいと思います。この場合、モックされたオブジェクトに対してメソッドを実行する必要はありません。これを単体テストでどのように表現できますか?
c# - オブジェクトのモックが失敗するのはなぜですか?
私は Moq を使用していますが、単純なモック シナリオのように見えるものを単体テストに渡すことができないようです。
私が間違っていることについての指針はありますか?私のユニットテストレポート:-
Assert.AreEqual が失敗しました。予想:<1>。実際:<0>。
c# - モックを使用してメソッドの実装をテストする必要がありますか
moq を使用した単体テストを行うのに少し問題があります。
次のような関数がある場合:
次に、GetName 関数の戻り値をチェックするテストがあります。
したがって、私の質問は、モックを次のように定義する必要があることです。
またはこのように:
2 番目の方法を使用することに関する私の唯一の問題は、メソッド GetName の実装を結び付けて、常に "My com command" 文字列を内部的に使用しているように感じることです。
これは私がやるべきことですか、それとも私はこれをすべて間違っていますか?
単体テストとモックを始めたばかりなので、すべてをどのように連携させるべきかまだわかりません。