public async Task Sell_ReturnTradeCreated() { IQueryable <Trade> trades = new List <Trade> { new Trade { Action = "BUY", NoOfShares = 10, PortfolioId = 1, Symbol = "SIM", Price = 10.00M }, new Trade { Action = "SELL", NoOfShares = 3, PortfolioId = 1, Symbol = "SIM", Price = 12.00M } }.AsQueryable(); Func <HourlyShareRate> func = () => { return(new HourlyShareRate { Rate = 20.00M }); }; TradeModel model = new TradeModel { Action = "SELL", NoOfShares = 4, PortfolioId = 1, Symbol = "SIM" }; // Arrange _exchangeContext.Setup(p => p.Set <Trade>().Add(It.IsAny <Trade>())); _exchangeContext.Setup(p => p.SaveChangesAsync(It.IsAny <CancellationToken>())).ReturnsAsync(1); _dbSetTrade.As <IQueryable <Trade> >().Setup(m => m.Provider).Returns(trades.Provider); _dbSetTrade.As <IQueryable <Trade> >().Setup(m => m.Expression).Returns(trades.Expression); _dbSetTrade.As <IQueryable <Trade> >().Setup(m => m.ElementType).Returns(trades.ElementType); _dbSetTrade.As <IQueryable <Trade> >().Setup(m => m.GetEnumerator()).Returns(trades.GetEnumerator()); _exchangeContext.Setup(p => p.Trades).Returns(_dbSetTrade.Object); // Act Trade trade = await _tradeRepository.Sell(model, func); // Assert Assert.NotNull(trade); Assert.AreEqual(trade.Symbol, model.Symbol); Assert.AreEqual(trade.PortfolioId, model.PortfolioId); Assert.AreEqual(trade.NoOfShares, model.NoOfShares); Assert.AreEqual(trade.Price, 20.00M); }