我尝试为更新功能设置一个模拟程序
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);
}
我有错误 消息:System.Exception:一个兆ID标识符:13 //该ID不存在。
答案 0 :(得分:0)
看起来JelentkezokRepository.GetAll()
的行为不符合预期。
假设它返回一个集合
IEnumerable<Jelentkezok> GetAll();
这可能也需要设置。
//...
var item = new DA.Jelentkezok() {
Id = 13,
};
var all = new [] { item };
JelentkezokRepositoryMock.Setup(x => x.GetAll()).Returns(all);
//...
为了使if
条件在进行测试时按预期方式流动。