【发布时间】:2018-06-28 12:44:46
【问题描述】:
我已经在我的项目中实现了通用存储库。现在我正在为我的消费者编写测试用例。我正在尝试通过 Moq 模拟数据库功能,但我从数据库中获取值,而不是我通过 Moq 伪造的值。下面我分享我的实现。希望有人能帮我指出我犯的错误。
我的界面:
public interface IEventsRepository<T> : IRepository<T> {
T GetEventsByEventId(int eventId); }
我的班级:
public class EventsTableRepository : EFDBRepository<EventsModel>, IEventsRepository<EventsModel> {
public EventsModel GetEventsByEventId(int eventId)
{
return _dbSet.Where(x => x.EventID == eventId).FirstOrDefault();
}
}
我的消费者:
public static Response<string> EventsAccept(EventsAlertsRequest logMsgId)
{
IEventsRepository<EventsModel> eventsRepo = (IEventsRepository<EventsModel>)RepositoryLocator.GetRepositoryObject(STMEnums.RepositoryName.EventsTableRepository.ToString());
EventsModel eventmodel = new EventsModel();
eventmodel = eventsRepo.GetEventsByEventId(eachlogMsgId);
return EventStatusChangeResponse;
}
测试方法:
public void EventsAcceptSuccessTest()
{
EventsModel eventmodel = new EventsModel();
eventmodel.Message = "TEST";
Mock<IEventsRepository<EventsModel>> obj = new Mock<IEventsRepository<EventsModel>>();
obj.Setup(m => m.GetEventsByEventId(Moq.It.IsAny<int>())).Returns(eventmodel);
EventStatusChangeResponse = Diagnostics_.EventsAccept(logMsgId);
Assert.AreEqual(eventmodel.Status, EventStatus.ACCEPTED);
}
【问题讨论】:
标签: c# unit-testing generics moq