public void Remove_Order() { // Arrange var orderDataService = new OrderDataService(sourceService.Object, iLoggerFactory.Object.CreateLogger <OrderDataService>()); var itms = new List <DbOrder>() { new Order() { Id = 753, Amount = 555M, DateCreated = DateTime.UtcNow }.OrderToDbOrder(), new Order() { Id = new Random().Next(), Amount = 666M, DateCreated = DateTime.UtcNow }.OrderToDbOrder(), new Order() { Id = 1, Amount = 555M, DateCreated = DateTime.UtcNow }.OrderToDbOrder(), }; var ordersMock = TestHelper.ToDbSetMock(itms); ordersMock.Setup(x => x.RemoveRange(It.IsAny <DbOrder[]>())).Callback <DbOrder[]>((s) => { s.ToList().ForEach(fe => { itms.RemoveAll(x => x.Id == fe.Id); }); }); sourceService.Setup(x => x.Orders).Returns(ordersMock.Object); sourceService.Setup(x => x.Set <DbOrder>()).Returns(ordersMock.Object); var ordersCount = itms.Count; for (var i = itms.Count - 1; i >= 0; i--) { var restCount = itms.Count; var orderForDelete = itms[i]; // Action orderDataService.Remove(orderForDelete.Id); // Assert ordersMock.Verify(x => x.RemoveRange(It.IsAny <DbOrder[]>()), Times.Exactly(ordersCount - i)); Assert.AreEqual(restCount - 1, itms.Count); Assert.IsTrue(itms.TrueForAll(x => x.Id != orderForDelete.Id)); } }