Skip to content

Instantly share code, notes, and snippets.

@mizrael
Created January 9, 2017 20:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mizrael/3668d6163b2b577c88cb3381abaf451b to your computer and use it in GitHub Desktop.
Save mizrael/3668d6163b2b577c88cb3381abaf451b to your computer and use it in GitHub Desktop.
using Moq to mock a Repository and test an user update operation
using Xunit;
using Moq;
public class UpdateUserHandlerTests
{
[Fact]
public async Task should_Update_user_when_command_valid()
{
var command = new UpdateUser(id: Guid.NewGuid(), firstname: "lorem", lastname: "ipsum");
var user = new Infrastructure.Entities.User()
{
Id = command.UserId
};
var mockRepo = new Mock<IRepository<Infrastructure.Entities.UserData>>();
mockRepo.Setup(r => r.FindOneAsync(It.IsAny<Expression<Func<Infrastructure.Entities.UserData, bool>>>()))
.ReturnsAsync(user);
var mockDbContext = new Mock<IUserServiceDbContext>();
mockDbContext.Setup(db => db.UsersData).Returns(mockRepo.Object);
var sut = new UpdateUserHandler(mockDbContext.Object);
await sut.Handle(command);
mockRepo.Verify(m => m.UpsertOneAsync(It.IsAny<Expression<Func<Infrastructure.Entities.UserData, bool>>>(), It.IsAny<Infrastructure.Entities.UserData>()), Times.Once());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment