首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在模拟的测试对象上得到一个空引用异常?

为什么我在模拟的测试对象上得到一个空引用异常?
EN

Stack Overflow用户
提问于 2012-12-01 01:29:39
回答 1查看 2.2K关注 0票数 3

我有以下几点

代码语言:javascript
复制
IdleClass idleSend = MockRepository.GenerateMock<IdleClass >();
SpeedClass speedSend = MockRepository.GenerateMock<SpeeClass >();
idleSend.Expect(x => x.IsUnitInSystem(networkID)).Return(true).Repeat.Any();
speedSend.Expect(x => x.IsUnitInSystem(networkID)).Return(true).Repeat.Any();

原始的IsUnitInSystem(networkID)函数(在IdleClass和SpeedClass的子类中)如下:

代码语言:javascript
复制
public bool IsUnitInSystem(string networkID)
        {
            DateTime outVal = default(DateTime);
            return m_list1.DoesListContainUnit(networkID) ||
                   m_list2.TryGetValue(networkID, out outVal) ||
                   m_list3.TryGetValue(networkID, out outVal) ||
                   m_list4.TryGetValue(networkID, out outVal) ||
                   m_list5.TryGetValue(networkID, out outVal);
        }

我在IsUnitInSystem函数的返回线上恢复一个System.NullReferenceException。

堆栈跟踪:

代码语言:javascript
复制
IdleClass.IsUnitInSystem(String networkID)
PendingTest.<ResendClassTest>b__1b(IdleClass x)
RhinoMocksExtension.Expect[T,R](T mock, Function'2 action)
PendingTest.ResendClassTest()

我不明白的是,当我为函数指定了.Expect功能时,程序为什么以及如何进入函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 02:01:26

您试图模拟的方法必须能够由模拟对象实现,这意味着如果您模拟一个具体的类,它必须被标记为虚拟的。

看看下面的帖子,了解更多信息:Rhino Mocks stubs and mocks are only good for interfaces?

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

https://stackoverflow.com/questions/13650151

复制
相关文章

相似问题

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