4

私は Moq を試していますが、非常に基本的な例に行き詰まってしまいました。非常に単純なインターフェイス IInput をモックしたい:

namespace Example
{
    public interface IInput
    {
        int SomeProperty { get; set; }
    }
} 

これは非常に簡単な作業のようです。ただし、次のテスト コードでモックしようとすると、コンパイル エラーが発生します。

using Moq;
using NUnit.Framework;

namespace FirstEniro._Test
{

    [TestFixture]
    class TestFirstClass
    {
        [Test]
        public void TestConstructionOk()
        {
            var mock = new Mock<IInput>();
            mock.Setup(r => r.SomeProperty).Returns(3);

            var x = new FirstClass(mock);

            Assert.That(x, Is.EqualTo(3));
        }
    }
}

Moq.Mock<Example.IInput>コンパイラは「 からに変換できませ<Example.IInput>ん。何が間違っているのかわかりません。助けてください」と言います

4

2 に答える 2

12

モックのプロパティを使用Objectして、モック オブジェクトのインスタンスを取得します。

   var x = new FirstClass(mock.Object);

MoqフレームワークMockでは、モックしているもののインスタンスではありません(Rhino Mocksのように)。

于 2012-10-23T08:32:06.647 に答える
3

Objectインスタンスのプロパティを使用Mockして、実際のモック オブジェクトを取得します。

var x = new FirstClass(mock.Object);

Mockクラスは、メソッド/検証の設定に使用されます。ObjectC# コンパイラの制限により、アクセサーを使用する必要があります。Microsoft Connectでそれを解除するために投票できます ( QuickStartの注を参照してください)。

于 2012-10-23T08:31:44.763 に答える