首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rhino Mock OfType<>

Rhino Mock OfType<>
EN

Stack Overflow用户
提问于 2010-10-26 11:38:22
回答 1查看 348关注 0票数 1

我正在尝试测试这条语句

代码语言:javascript
复制
IStudentAssessmentUnitStatus res = student.UnitStatusList.OfType<IStudentAssessmentUnitStatus>().
                                                                                FirstOrDefault(s => s.ID == unit.ID);

在列表中可能有多个类型,因此是OfType。但是在测试时,它会显示"Object reference not set to an instance“

代码语言:javascript
复制
     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();

任何一位Rhino专家都能看到我做错了什么。上面的代码对于枚举很有效,从技术上讲,OfType应该只做一个foreach并执行一个"is“操作

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-10-26 13:45:02

尝试将最后一行替换为:

代码语言:javascript
复制
Expect.Call(mockEnum2.GetEnumerator()).Do(new Func<IEnumerator<IStudentUnitStatus>>(s => studentunitList.GetEnumerator())).Repeat.Any();

(您可能必须将IEnumerator<IStudentUnitStatus>更改为IEnumerator才能使其正常工作。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4020513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档