Rhino Mock OfType<>

时间:2010-10-26 03:38:22

标签: c# linq unit-testing rhino-mocks

我试图测试这个陈述

IStudentAssessmentUnitStatus res = student.UnitStatusList.OfType<IStudentAssessmentUnitStatus>().
                                                                                FirstOrDefault(s => s.ID == unit.ID);

在列表中可能有多种类型,因此OfType。但是在测试时会说“对象引用未设置为实例”

     var _mockStudentFormUnit = _mockery.DynamicMock<IStudentAssessmentUnitStatus>();
     var _mockStudentAssessmentUnit = _mockery.DynamicMock<IStudentFormUnitStatus>();

     var studentunitList = new List<IStudentUnitStatus>() { _mockStudentFormUnit, _mockStudentAssessmentUnit };

     var mockEnum2 = _mockery.DynamicMock<IEnumerable<IStudentUnitStatus>>();

     Expect.Call(_mockStudent2.UnitStatusList).Return(mockEnum2).Repeat.Any();
     Expect.Call(mockEnum2.GetEnumerator()).Return(null).WhenCalled(s => s.ReturnValue = studentunitList.GetEnumerator()).Repeat.Any();

任何犀牛专家都可以看到我做错了什么。以上工作适用于枚举,而OfType在技术上应该只做一个foreach并执行“is”操作

由于

1 个答案:

答案 0 :(得分:1)

尝试用:

替换最后一行
Expect.Call(mockEnum2.GetEnumerator()).Do(new Func<IEnumerator<IStudentUnitStatus>>(s => studentunitList.GetEnumerator())).Repeat.Any();

(您可能需要将IEnumerator<IStudentUnitStatus>更改为IEnumerator才能使其生效。)