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 回答