如何测试先检查记录是否存在然后在单元测试中创建记录的功能

时间:2018-07-02 08:30:07

标签: unit-testing .net-core

有一个添加记录的功能,但是在添加记录之前,我们先检查记录是否存在。这里的问题是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);

    }

0 个答案:

没有答案