using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; using Moq; using Moq.Internals; using Moq.Language; using Moq.Protected; using xUnitStudy.IBll; using xUnitStudy.Bll; using xUnitStudy.IDal; using xUnitStudy.Model; namespace xUnitStudy.WebApi.Test { public class StudentBllTest:IDisposable { #region 准备 private StudentBll actualBll; public StudentBllTest() { //这里创建和设置需要注入的IDal。当然也可以创建和设置,直接注入。 actualBll = new Bll.StudentBll(); } #endregion [Fact] public void Students_Test() { IStudentBll actual_Bll = new StudentBll(); List studentsFromProperty = actual_Bll.Students; List studentsFromMethod = actual_Bll.GetAll(); Assert.Equal(studentsFromMethod, studentsFromProperty); } [Fact] public void GetAll_Test() { List students = actualBll.GetAll(); Assert.Equal(actualBll.Students, students); } [Fact] public void GetStudentById_Test() { var studentId = 1; Student student = actualBll.GetStudentById(studentId); Assert.NotNull(student); Assert.Equal(studentId, student.Id); } /// /// 获取学费 /// 属性注入:IDal Mock对象 /// [Fact] public void GetTuition_UseMoq_Test() { // #准备 Mock mockStudentDal = new Mock(); mockStudentDal .Setup(m => m.GetStudentById(2)) .Returns ( new Student() { Id = 2, Name = "小小张", Age = 95 } ); //属性注入,也可以使用构造函数注入 actualBll.dal = mockStudentDal.Object; // #使用 var student = actualBll.GetStudentById(2); var tuition = actualBll.GetTuition(2); // #断言 Assert.Equal(student.Id + student.Age, tuition); } #region 清理 public void Dispose() { } #endregion } }