如何创建一个测试来检查记录是否已存在于数据库中

How to create a test that checks whether the record already exists in the database

我正在使用 xUnit 为需要查询数据库以验证记录是否已存在的方法创建单元测试。在我的测试中,我使用 NSubstitute Mock 我的存储库。

因此:

public class MyTestClass
{
    public MyTestClass()
    { 
        myRepository = Substitute.For<IMyRepository>();
    }

    [Fact]
    public void My_Test()
    {
        var myService = new MyService(myRepository);

        var result = myService.Create(mockObject);

        ....
    }

这是我引用的服务的实现:

public class MyService
{
    public MyService(IMyRepository repository)
    {
        _repository = repository
    }

    IMyRepository _repository;

    public X Create(MyObject mockObject)
    {
        var result =  _repository.CheckIfExists(mockObject.Name); //This return an NAME for example;

        if (result == mockObject.Name)
        {
            return X.Error("Message...")
        }
    }
}

问题是:

我如何测试我的服务的 if (result == mockObject.Name),因为我的存储库是假的?我在测试 class.

上需要这条消息 return X.Error("Message...")

如何测试这段代码?

mock/substitute 需要配置为按测试预期的方式运行

例如

public class MyTestClass {
    public MyTestClass()  
        myRepository = Substitute.For<IMyRepository>();
    }

    [Fact]
    public void My_Test() {
        //Arrange
        myRepository.CheckIfExists(mockObject.Name).Returns(mockObject.Name);

        var myService = new MyService(myRepository);

        //Act
        var result = myService.Create(mockObject);

        //Assert
        //....check that the returned result is as expected.
    }
}