簡體   English   中英

如何創建一個測試來檢查該記錄是否已存在於數據庫中

[英]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) ,因為我的存儲庫是 FAKE? 我需要這條消息在測試類上return X.Error("Message...")

如何測試這段代碼?

模擬/替代品需要配置為測試預期的行為

例如

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.
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM