예제 #1
0
        public void AppendLine2()
        {
            var logSystem = new LogSystem();

            // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象
            var fakeWriter = new Mock <ILogWriter>();
            // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象
            var fakeSource = new Mock <ISource>();

            //将ISource伪对象注入到ILogWriter伪对象的属性
            fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object);

            // 伪造ILogWriter接口的CurrentLine属性
            fakeWriter.SetupProperty(fake => fake.CurrentLine);
            fakeWriter.Object.CurrentLine = 3;
            // 当连续调用ILogWriter接口的AppendLine方法,并输入任意string类型参数时,触发回调使伪对象CurrentLine属性的值+1
            fakeWriter.Setup(fake => fake.AppendLine(It.IsAny <string>()))
            .Callback(() => fakeWriter.Object.CurrentLine++);

            //将伪对象注入到被测试类
            logSystem.OpenAppend(fakeWriter.Object);

            logSystem.AppendLine("运行正常");

            Assert.AreEqual(4, logSystem.Writer.CurrentLine);
        }
예제 #2
0
        public void ShowUri()
        {
            var logSystem = new LogSystem();

            // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象
            var fakeWriter = new Mock <ILogWriter>();

            // 伪造ILogWriter接口的Source属性的Uri属性,并且赋初值new Uri("Log.txt", UriKind.Relative)
            fakeWriter.SetupProperty(fake => fake.Source.Uri, new Uri("Log.txt", UriKind.Relative));

            //将伪对象注入到被测试类
            logSystem.OpenAppend(fakeWriter.Object);

            var result = logSystem.ShowUri();

            Assert.AreEqual("Log.txt", result);
        }
예제 #3
0
        public void UpdatedTime()
        {
            var logSystem = new LogSystem();

            // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象
            var fakeWriter = new Mock <ILogWriter>();
            // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象
            var fakeSource = new Mock <ISource>();

            //将ISource伪对象注入到ILogWriter伪对象的属性
            fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object);

            //将伪对象注入到被测试类
            logSystem.OpenAppend(fakeWriter.Object);

            // 触发ISource接口的Updated事件,并且设sender为ISource伪对象,参数为new DateTime(2018, 10, 10)
            fakeSource.Raise(fake => fake.Updated += null, fakeSource.Object, new DateTime(2018, 10, 10));

            Assert.AreEqual(new DateTime(2018, 10, 10), logSystem.UpdatedTime);
        }
예제 #4
0
        public void Save()
        {
            var logSystem = new LogSystem();

            // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象
            var fakeWriter = new Mock <ILogWriter>();
            // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象
            var fakeSource = new Mock <ISource>();

            //将ISource伪对象注入到ILogWriter伪对象的属性
            fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object);

            // 当调用ILogReader接口的Save()方法时,返回true
            fakeWriter.Setup(fake => fake.Save()).Returns(true);

            //将伪对象注入到被测试类
            logSystem.OpenAppend(fakeWriter.Object);

            var result = logSystem.Save();

            fakeWriter.Verify(fake => fake.Save(), Times.Once);
            //fakeWriter.Verify(fake => fake.Source, Times.Once);
            //fakeWriter.VerifyNoOtherCalls();
        }