【发布时间】:2015-09-21 16:09:27
【问题描述】:
我想问一下 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);
}
}
编辑:
但我不确定如何设置它。这个结果不为空,但它对我有什么作用?
[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 语句执行后操纵结果,因此您最好创建一个实际命中数据库的集成测试。
标签: c# unit-testing moq mstest