Compare commits

...

9 Commits

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public class Bar
{
public virtual Baz Baz { get; set; }
public virtual bool Submit() { return false; }
}
}

@ -6,7 +6,8 @@ using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public class Class1
public class Baz
{
public virtual string Name { get; set; }
}
}

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public class CallBaseHelper
{
/// <summary>
/// 获取当前时间
/// </summary>
public virtual string NameFormat(string name)
{
return name.ToUpper();
}
}
}

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public class DemoHelper : IDemo
{
public virtual int Add(int a, int b)
{
return a = b;
}
public int Minus(int a, int b)
{
return a - b;
}
}
public interface IDemo
{
int Minus(int a, int b);
}
public interface CommandBaseProtectedMembers
{
bool Execute(string arg);
}
public interface TeacherDoubling
{
decimal Doubling(decimal number);
}
}

@ -4,9 +4,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.Test
namespace MoqStudy.MockModel.DemoModel
{
public class Class1
public class EventDemo
{
}
}

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public interface IFoo
{
Bar Bar { get; set; }
string Name { get; set; }
int Value { get; set; }
bool DoSomething(string value);
bool DoSomething(int number, string value);
string DoSomethingStringy(string value);
bool TryParse(string value, out string outputValue);
bool Submit(ref Bar bar);
int GetCount();
bool Add(int value);
}
}

@ -43,11 +43,18 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="DemoModel\Bar.cs" />
<Compile Include="DemoModel\Baz.cs" />
<Compile Include="DemoModel\CallBaseHelper.cs" />
<Compile Include="DemoModel\DemoHelper.cs" />
<Compile Include="DemoModel\EventDemo.cs" />
<Compile Include="DemoModel\IFoo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StudyModel\Teacher.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MoqStudy.MockModel
{
public class Teacher
{
public Teacher(){ }
public Teacher(int groupId)
{
GroupId = groupId;
}
public int Id { get; set; }
public string Name { get; set; }
public int GroupId { get; set; }
public virtual int Add()
{
return Id + GroupId;
}
protected virtual decimal Doubling(decimal number)
{
return number * 2;
}
protected virtual bool Execute(int number)
{
if (number == 0)
{
return false;
}
return number % 2 == 0;
}
/// <summary>
/// 运行私有方法
/// </summary>
public virtual bool CompareWithDoubling(decimal number)
{
return number > Doubling(number);
}
}
}

File diff suppressed because it is too large Load Diff

@ -69,7 +69,8 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="MoqDemoTest.cs" />
<Compile Include="MoqStudyTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Moq;
using Moq.Internals;
using Moq.Language;
using Moq.Protected;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
using MoqStudy.MockModel;
namespace MoqStudy.Test
{
/// <summary>
/// Moq 模拟框架学习
/// </summary>
public class MoqStudyTest
{
#region 创建Mock对象
/// <summary>
/// 使用默认设置创建默认对象
/// </summary>
[Fact]
public void Create_Default_Mock_Test()
{
var mock = new Mock<Teacher>();
mock
.Setup(t => t.Add())
.Returns(88);
var teacher = mock.Object;
Assert.NotNull(teacher);
Assert.Equal(0, teacher.GroupId);
Assert.Equal(88, teacher.Add());
}
/// <summary>
/// 给对象构造函数传递参数,创建对象
/// </summary>
[Fact]
public void Create_Params_Mock_Test()
{
var groupId = 8;//Teacher类构造函数的参数
var addResult = 88;
var mock = new Mock<Teacher>(groupId);
mock.Setup(t => t.Add()).Returns(addResult);
var teacher = mock.Object;
Assert.NotNull(teacher);
Assert.Equal(groupId, teacher.GroupId);
Assert.Equal(addResult, teacher.Add());
}
/// <summary>
/// 使用MockBehavior选项设置创建默认对象
/// MockBehavior.Default 默认值即是 MockBehavior.Loose
/// MockBehavior.Loose 宽松模式:未显式设置的,取默认值
/// MockBehavior.Strict 严格模式:未显式设置的,报异常
/// </summary>
[Fact]
public void Create_MockBehavior_Mock_Test()
{
var mock = new Mock<Teacher>(MockBehavior.Loose);
mock.Setup(t => t.Add()).Returns(88);
var teacher = mock.Object;
Assert.NotNull(teacher);
Assert.Equal(0, teacher.GroupId);
Assert.Equal(88, teacher.Add());
}
/// <summary>
/// 使用MockBehavior选项设置并传递参数给构造函数创建对象
/// </summary>
[Fact]
public void Create_MockBehaviorAndParams_Mock_Test()
{
var groupId = 9;
var addResult = 88;
var mock = new Mock<Teacher>(MockBehavior.Loose, groupId);
mock.Setup(t => t.Add()).Returns(addResult);
var teacher = mock.Object;
Assert.NotNull(teacher);
Assert.Equal(groupId, teacher.GroupId);
Assert.Equal(addResult, teacher.Add());
}
#endregion
}
}
Loading…
Cancel
Save