我想問下面的方法什麼是一個好的單元測試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);
}
}
編輯:
但我不知道如何設置它。這個結果不是null,但它對我有什麼作用?
[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);
}
我可能不會打擾單元測試此。您正在測試基於過濾器('interimIdentifier')從EF返回數據庫對象。在執行LINQ語句後,您的代碼不會處理結果,因此您最好創建實際觸及數據庫的集成測試。 – levelnis