こんにちは、私はMockingを初めて使っています。Rhino MocksのようなMoq部分クラス
私はクラスを持っている:
public class Car
{
public virtual void Register() {
...
Warrant();
}
public virtual void Warrant() {
...
}
}
私はそのRegister
通話Warrant
をテストしたいました。私はこれが正しいかどうかさえわからないが、仕事をするように見えた
[Test]
public void RhinoCarTest() {
var mocks = new Rhino.Mocks.MockRepository();
var car = mocks.PartialMock<Car>();
mocks.ReplayAll();
car.Stub(x => x.Warrant());
car.Register();
car.AssertWasCalled(x => x.Warrant());
}
:RhinoMocksを使用して私が思い付きました。 Moqでも同じことをしたいと思っていました。私は部分的なMoqを見つけることができなかった。私がいた思い付いた何
:
[Test]
public void MoqCarTest() {
var car = new Mock<Car>();
car.Setup(x => x.Warrant());
car.Object.Register();
car.Verify(x => x.Warrant());
}
これは、たとえ動作しません。誰かが私を正しい方向に向けることができますか?
こんにちはPatrick Steele、あなたの答えに感謝します。これは、Registerメソッドをスタブしてスタブがテストに必要なものを返すようにすることが正しいと思います。次に、機能が正しいことをテストするだけです。もう1つのことは、あなたがあなたが言っている方法をチェックしてはならないと言ってもいいかどうかです。 – AnonyMouse
Registerメソッドがテストしたいものならば、そこにあるバグがRegisterの単体テストに影響しないように、Warrantメソッドをスタブします。次に、Warrantの単体テストを書く。特定のオブジェクト(通常は依存関係)に対してメソッドが呼び出されていることを確認するためにVerifyを使用します。例:データをデータベースに保存するクラスがある場合、私は "更新"を呼び出す際に、私のIReporitoryの "保存"メソッドが呼び出されたことを確認します。同様に、そうでなければ呼び出されないようにすることができます。 – PatrickSteele
こんにちは、パトリックスティール、その説明をいただきありがとうございます。 – AnonyMouse