为更新功能设置模拟(CRUD)

Setup Mock for Update function (CRUD)

我尝试为更新功能设置一个模拟,

public class JelentkezokService : IJelentkezokService
{
    IJelentkezokRepository JelentkezokRepository { get; set; }

    public Jelentkezok Update(Jelentkezok jelentkezo)
    {
        if (JelentkezokRepository.GetAll().Any(x => x.Id == jelentkezo.Id))
        {
            return JelentkezokRepository.Update(jelentkezo);
        }
        //The ID is not exist
        else throw new Exception($"A megadott jelentkező ID nem létezik: {jelentkezo.Id}");
    }
}

正在测试函数是否被调用,但在服务中出现异常。有什么想法吗?

[TestFixture]
public class JelentkezokBLTests
{
    Mock<IJelentkezokRepository> JelentkezokRepositoryMock;

    [Test]
    public void JelentkezokUpdateMeghivva()
    {
        //Arrange
        JelentkezokRepositoryMock = new Mock<IJelentkezokRepository>();

        var input = new DA.Jelentkezok()
        {
            Id = 13,
            Nev = "Kis Béla",
            Varos = "Győr",
            Utca = "Kodály Zoltán u. 15.",
            SzuletesiDatum = new DateTime(1982, 11, 19),
            Iranyitoszam = 9030,
            Ferfi = true,
        };
        var mockedResult = new DA.Jelentkezok()
        {
            Id = 13,
            Nev = "Kis Anita",
            Varos = "Győr",
            Utca = "Kodály Zoltán u. 15.",
            SzuletesiDatum = new DateTime(1982, 11, 19),
            Iranyitoszam = 9030,
            Ferfi = false,
        };

        JelentkezokRepositoryMock.Setup(x => x.Update(input)).Returns(mockedResult);

        JelentkezokService service = new JelentkezokService(JelentkezokRepositoryMock.Object);
        //Act
        var updateJelentkezo = service.Update(input);

        //Assert
        //Assert.That(input, Is.Not.Null);
        JelentkezokRepositoryMock.Verify(v => v.Update(input), Times.AtLeastOnce);

}

我有错误 Message: System.Exception : A megadott jelentkező ID nem létezik: 13 //The ID is not exist.

看起来 JelentkezokRepository.GetAll() 没有按预期运行。

假设它 returns 是一个集合

IEnumerable<Jelentkezok> GetAll();

这可能也需要设置。

//...

var item = new DA.Jelentkezok() {
    Id = 13,            
};
var all = new [] { item };

JelentkezokRepositoryMock.Setup(x => x.GetAll()).Returns(all);

//...

为了让if条件在测试时按预期流动。