ARTICLE AD BOX
In my code, I use a SingleOrDefaultAsync method, which accepts Expression<Func<T, bool> like this:
await _recipientRepository.SingleOrDefaultAsync(x => x.Id == receiverId);The unit test looks like this:
[Fact] public async Task Should_Create_Delivery_With_Valid_Sender_And_Recipient() { // Arrange var sender = new Sender(_senderId, "John", "Doe"); var recipient = new Recipient(_recipientId, "Jane", "Smith"); _fakeSenderRepo .SingleOrDefaultAsync(Arg.Any<Expression<Func<Sender, bool>>>()) .Returns(sender); _fakeRecipientRepo .SingleOrDefaultAsync(Arg.Any<Expression<Func<Recipient, bool>>>()) .Returns(recipient); // Act var delivery = await _deliveryManager.CreateDeliveryAsync(_senderId, _recipientId); // Assert delivery.ShouldNotBeNull(); delivery.SenderId.ShouldBe(_senderId); delivery.ReceiverId.ShouldBe(_recipientId); }I don't know how to check that there is _senderId in the Expression that I pass to SingleOrDefaultAsync. I don't like this Arg.Any<Expression<Func<Sender,bool>>>(), I want to control that I pass _senderId to the expression.
