Я хочу спросить, что является хорошим модульным тестом для метода ниже GetMeetingsByInterimIdentifier, где промежуточный идентификатор представляет собой строку - например, 78th2015.Как тестировать устройство без попадания в базу данных
Мы настроены на использование интерфейса IMeetingsService. Мы используем MOQ и Microsoft.VisualStudio.TestTools.UnitTesting.
public class MeetingsService : IMeetingsService
{
private readonly IInterimCommitteeDbContext _db;
public MeetingsService(IInterimCommitteeDbContext db)
{
this._db = db;
}
public IQueryable<Meeting> GetMeetingsByInterimIdentifier(string interimIdentifier)
{
return
from m in this._db.Meetings
join c in this._db.Committees on m.CommitteeId equals c.CommitteeId
where c.InterimIdentifier == interimIdentifier
select m;
}
public Meeting GetMeeting(int meetingKey)
{
return this._db.Meetings.FirstOrDefault(x => x.MeetingId == meetingKey);
}
}
Edit:
Но я не знаю, как установить его. Этот результат не является нулевым, но что он делает для меня?
[TestMethod]
public void GetMeetingsByInterimIdentifier_WithInterimIdentifier_ReturnsMeetingList()
{
//Arrange
var interim = Properties.Settings.Default.DefaultInterimIdentifier;
var result = _meetingServiceMock.Setup(x => x.GetMeetingsByInterimIdentifier(interim));
//Act
//Assert
Assert.IsNotNull(result);
}
я, вероятно, не будет беспокоить модульного тестирования этого. Вы тестируете, что объекты базы данных возвращаются из EF на основе фильтра ('interimIdentifier'). Ваш код не обрабатывает результат после выполнения оператора LINQ, поэтому вам лучше создать тест интеграции, который фактически попадает в базу данных. – levelnis