0
[TestClass]
public class FooTests {
        [TestMethod]
        public void TestFoo() {
            var fooMock = MockRepository.GenerateMock<IFoo>();
            // MUT
            FooUser.Run(fooMock);

            var stream = fooMock.Content;
            stream.Position = 0;

            var first = stream.ReadByte();
            Assert.AreEqual(0x77, (byte) first);
            var second = stream.ReadByte();
            Assert.AreEqual(0x78, (byte) second);
        }
    }

    public class Foo :IFoo {
        public Stream Content { get; set; }
    }

    public class FooUser {
        public static void Run(IFoo foo) {
            foo.Content = new MemoryStream(new byte[] {0x77, 0x78});
        }
    }

    public interface IFoo {
        Stream Content { get; set; }
    }

AssertWasCalledストリームの検証には適していないようです。

fooMock.Content.Stub(aStream => stream = aStream);

例外をスローしました:

System.ArgumentNullException: You cannot mock a null instance
Parameter name: mock

注:Molesは、この問題に対してより適切に機能するようです。

4

1 に答える 1

2

交換:

var fooMock = MockRepository.GenerateMock<IFoo>();

と:

var fooMock = MockRepository.GenerateStub<IFoo>();
于 2012-05-29T14:18:40.120 に答える