217 Mock Repository 01

真正的Mocking不需要在数据库中执行,只需要一个定义好的返回值

示例

添加字段

//private fields
private readonly Mock<IPersonsRepository> _personsRepositoryMock;
private readonly IPersonsRepository _personsRepository;
private readonly IPersonsService _personService;

更新构造函数

 _personsRepositoryMock = new Mock<IPersonsRepository>();
 _personsRepository = _personsRepositoryMock.Object;
 _personService = new PersonsService(_personsRepository);

更新单元测试方法

//When we supply proper person details, it should insert the person into the persons list
//and it should return an object of PersonResponse, which includes with the newly generated person id
[Fact]
public async Task AddPerson_FullPersonDetails_ToBeSuccessful()
{
    //Arrange
    //PersonAddRequest? personAddRequest = _fixture.Create<PersonAddRequest>();
    PersonAddRequest personAddRequest = _fixture.Build<PersonAddRequest>()
        .With(p => p.Email, "person@example.com").Create();

    Person person = personAddRequest.ToPerson();
    PersonResponse person_response_expected = person.ToPersonResponse();
    //If we supply any argument value to the AddPersonAsync method,
    //it should return the same return value
    _personsRepositoryMock.Setup(p => p.AddPersonAsync(It.IsAny<Person>()))
        .ReturnsAsync(person);
    //Act
    PersonResponse personResponse = await _personService.AddPerson(personAddRequest);
    person_response_expected.PersonId = personResponse.PersonId;
    //Assert
    personResponse.PersonId.Should().NotBe(Guid.Empty);
    personResponse.Should().Be(person_response_expected);
}

Gitee获取源码:

https://gitee.com/huang_jianhua0101/asp.-net-core-8.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄健华Yeah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值