using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
public static async Task Main()
var todo = new TodoItem { Id = 1, Name = "test", IsComplete = true };
var mockSet = new Mock<DbSet<TodoItem>>();
mockSet.Setup(s => s.FindAsync(1L)).ReturnsAsync(todo);
var mockContext = new Mock<TodoContext>();
mockContext.Setup(c => c.TodoItems).Returns(mockSet.Object);
var service = new TodoItemsController(mockContext.Object);
var deleteTodo = await service.DeleteTodoItem(1);
mockSet.Verify(m => m.FindAsync(1L), Times.Once());
Console.WriteLine("Test complete without error");
public class TodoContext : DbContext
public virtual DbSet<TodoItem> TodoItems { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
public class TodoItemsController
readonly TodoContext _context;
public TodoItemsController(TodoContext context)
public async Task<IActionResult> DeleteTodoItem(long id)
var todoItem = await _context.TodoItems.FindAsync(id);
_context.TodoItems.Remove(todoItem);
await _context.SaveChangesAsync();
public NotFoundResult NotFound() { return new NotFoundResult(); }
public NoContentResult NoContent() { return new NoContentResult(); }
public interface IActionResult{}
public class NotFoundResult : IActionResult {}
public class NoContentResult : IActionResult {}