有一个添加记录的功能,但是在添加记录之前,我们先检查记录是否存在。这里的问题是var exist = await GetRecord(ob.Id);
始终返回值,但是此对象必须返回null,以便unit test
可以按预期测试整个逻辑。
那么如何模拟这个功能
功能
public async Task<string> AddRecord(Myclass ob, string name, string id)
{
string result = "Added successfully";
var exist = await GetRecord(ob.Id);
if (exist == null)
{
ob.CreatedAt = DateTime.Now;
ob.CreatedBy = name;
_authen.Myclasses.Add(ob);
await _authen.SaveChangesAsync();
}
else
{
return null;
}
return result;
}
单元测试
[TestMethod]
public async Task Add_Record()
{
//arrange
var id = Guid.NewGuid();
var ob= new MyClass {
Id = "UTEST",
Name = "U M",
Logo = null
};
Mock<DbSet<MyClass>> ClassDBMock = DbSetMock.Create(ob);
_authContextMock.Setup(x => x.MyClasses).Returns(ClassDBMock.Object);
//act
var result = await _MyClassService.AddRecord(ob, "Angel", id.ToString());
// Assert
Assert.AreNotEqual("UU", ob.Id);
Assert.IsTrue(result == null);
}