Rhino Mock OfType<>

发布于 2024-09-29 14:54:22 字数 1049 浏览 0 评论 0 原文

我试图测试这个语句

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();

任何Rhino专家都可以看到我做错了什么吗?上面的方法适用于枚举,而 OfType 从技术上讲应该只执行 foreach 并执行“is”操作

谢谢

Im trying to test this statement

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

Inside the list there could be multiple types hence the OfType. However when testing it says "Object reference not set to an instance"

     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();

Can any Rhino experts see what I have done wrong . The above works fine for enumerations and OfType technically should just do a foreach and perform an "is" operation

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百变从容 2024-10-06 14:54:22

尝试将最后一行替换为:(

Expect.Call(mockEnum2.GetEnumerator()).Do(new Func<IEnumerator<IStudentUnitStatus>>(s => studentunitList.GetEnumerator())).Repeat.Any();

您可能需要将 IEnumerator 更改为 IEnumerator 才能使其正常工作。)

Try replacing the last line with:

Expect.Call(mockEnum2.GetEnumerator()).Do(new Func<IEnumerator<IStudentUnitStatus>>(s => studentunitList.GetEnumerator())).Repeat.Any();

(You may have to change IEnumerator<IStudentUnitStatus> to IEnumerator to get this to work.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文