首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rhino Mocks:Mocked方法返回null

您好!您提到的Rhino Mocks是一个常用的C# mock框架,它可以帮助开发人员轻松地创建和管理mock对象,以便在单元测试中使用。

在Rhino Mocks中,当一个mock方法被调用时,它会返回一个默认值。对于引用类型,默认值通常是null。如果您希望mock方法返回一个非null值,则需要使用Return()方法来指定返回值。例如:

代码语言:csharp
复制
var mockRepository = new MockRepository();
var mockObject = mockRepository.DynamicMock<MyObject>();

Expect.Call(mockObject.GetSomething()).Return(new Something());

在上面的示例中,我们创建了一个名为mockObject的mock对象,并使用Return()方法指定了GetSomething()方法的返回值。这样,当GetSomething()方法被调用时,它将返回一个新的Something对象,而不是null。

需要注意的是,Rhino Mocks已经不再维护,您可以考虑使用其他更现代化的mock框架,例如Moq或NSubstitute。这些框架提供了更好的性能和更简单的语法,可以帮助您更轻松地进行mock测试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Microsoftthrifty:RPC方法返回NULL的异常处理

https://blog.csdn.net/10km/article/details/86244875 我们知道:thrift框架是不允许返回值为null的,如果返回值为null,client...端会抛出异常,我在之前用facebook/swift框架时就遇到了这个问题,这是当时解决问题的记录《thrift:返回null的解决办法》,现在使用Microsoft/thrifty框架实现的客户端同样也存在这个问题..., "Missing result"); } } } 可以看到,返回结果为null时,会抛出类型为MISSING_RESULT的ThriftException异常。...知道了原因,解决问题的方法有了: /** * 当前调用的回调函数,由当前接口方法设置 */ final ServiceMethodCallback callback =...Override public void onError(Throwable error) { // 如果关闭时有异常,则将异常转给callback对象, // 当方法返回值为

1.4K40

React 应用架构实战 0x4:模拟 API

msw 是一个很好的工具,它允许我们创建 mocked API 服务,并且这些服务的行为与真实的 API 服务一样。...location: String, department: String, }, }; export const db = factory(models); 我们可以使用每个模型上的许多不同方法...正如先前提到的,MSW 中的处理程序是一个函数,如果定义了它,它将拦截任何匹配的请求,不会将请求发送到网络,而是修改它们并返回模拟的响应。...,则会从数据库返回用户和身份验证令牌 getUser 返回一个测试用户对象 requireAuth 如果 cookie 中存在令牌,则返回当前用户;如果不存在令牌,则可以选择抛出错误 // src/testing...; } return null; } return getUser(); } }; 在开始之前,将所有处理程序都包含在配置中。

40630
  • iOS_单元测试三之OCMock使用

    类和协议 Strict class and protocol mocks 1.4、部分模拟 Partial mocks 1.5、观察者模拟 Observer mocks 2、存根方法 Stubbing...values 2.3、委托给一个block Delegating to another method 2.4、委托给块 Delegating to a block 2.5、模拟 通过参数返回值的方法返回值...1.5、观察者模拟 Observer mocks 用官方的XCTNSNotificationExpectation 2、存根方法 Stubbing methods 2.1、模拟方法返回值 Stubbing...仅提供了一种选择退出模拟以免发生意外行为的机制 + (BOOL)supportsMocking:(NSString **)reason { *reason = @"Don't want to be mocked...当开发人员尝试为此类创建模拟程序时,将引发异常,解释问题说在 该方法在单独调用中返回不同的值是可以接受的,这使它在运行时对特定条件做出反应 如果该方法为reason赋值,返回值将被忽略 对于所有未实现此方法的类

    3.2K20

    不会测试的程序员不是好程序员(一文让你掌握JMockit的使用)

    添加上这些注解表示这个属性它的实例化,属性赋值,方法调用的返回值全部由JMockit来接管,也就是意味着可以通过录制行为来自定义测试属性的具体实现,具体图如下:   (三) 测试参数(其实就是方法的参数...1、Record(录制): 即先录制某类/对象的某个方法调用,在当输入什么时,返回什么。 2、Replay(重放): 重放测试逻辑,实际上就是调用上面录制的方法 3、重放后的验证。...二: JMockit常用API注解及区别   (一) @Mocked:修饰类/接口时,就是告诉JMockit,生成一个被修饰类/接口的Mock对象,这个对象中方法(包含静态方法)返回默认值。...即如果返回类型为原始类型(short,int,float,double,long)就返回0,如果返回类型为String就返回null,如果返回类型是其它引用类型,则返回这个引用类型的Mocked对象(就类型与生成一个假对象...(三) @Injectable注解:作用是告诉JMockit生成一个Mocked对象,但@Injectable只是针对其修饰的实例,而@Mocked是针对其修饰类的所有实例,@Injectable对类的静态方法

    1.4K10

    单元测试 Mock不Mock?

    通常,我们编写的方法(或函数)都是由很多方法按照层级组成的,就像这样当我们对顶层方法进行单元测试时,应该Mock哪些方法?...如果Mock方法4、5、6,里面的逻辑或返回值有修改,那么就要递归向上修改,不符合软件工程。但是,如果方法43、、5、6都涉及到DB或者网络调用等外部不可控操作,我们就应该对其Mock。...如果模拟的函数实际被调用了多次,需要通过以下方式# 断言mocked_update被调用了2次self.assertEqual(mocked_update.call_count, 2)# 断言mocked_update...被调用了,并且参数正确mocked_update.assert_any_call(xx)如果函数有返回值,在定义模拟函数时,添加 return_value,return_value可以是任意类型。...patch('...update', return_value='xxx') as mocked_update在验证返回值时通过下面的方式xxxx = mocked_update.return_valueself.assertEqual

    19920

    在用Mockito做单元测试时如何使用doAnswer…when

    原来,doAnswer…when和when…thenReturn的功能类似,都是用于给模拟对象指定调用其方法后的返回值,只不过二者有如下区别: 01 when…thenReturn: 当我们为模拟对象指定调用其方法返回值时...02 doAnswer…when: 当模拟对象调用它的方法,需要执行一些操作(其实就是需要执行一个代码块)才能得到返回值时,则需要使用doAnswer来构造产生这个模拟的返回值。...例如:当模拟对象调用某个方法返回值是个复合值(bean)时,就需要用doAnswer来构造该返回值。...testSecurityId"); ... } catch (Exception e) { log.error("errorin setting up mocked...lookup("testStock"); ... } catch (Exception e) { log.error("error in setting up mocked

    11.4K10

    【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求

    ---- 知识点 将 mock 对象断言为特定类型 使用 jest.Mocked 使用 it.only 来指定测试的 case 使用 skip 跳过指定测试的 case 测试内容 触发事件...trigger 方法 测试界面是否更新 特别注意 DOM 更新是个异步的过程 使用 async await 更新表单 setValue 方法 验证事件是否发送 emitted 方法 测试异步请求 模拟第三方库实现...todos.value.push(todo.value) emit('send', todo.value) } } // 初始化异步请求数据 const user = reactive({ data: null...import HelloWorld from '@/components/HelloWorld.vue'; jest.mock('axios'); //将 mock 对象断言为特定类型 使用 jest.Mocked... const mockAxios = axios as jest.Mocked; const msg = 'new message'; let wrapper: VueWrapper

    85810

    关于单元测试

    偶然想起@jeffz_cn在twitter上问:“私有方法真的不应该单元测试吗?为什么?我觉得有的组件只是逻辑复杂一些,因此会提取私有方法,并且测试这些私有方法的逻辑。...Mock类库一般情况下都是鸡肋 我在开始推动单元测试的时候就详细的研究了Rhino.Mocks类库。当时也被它强大语法能力所折服。并且实际将该类库应用在了我们项目的单元测试中。...远低于学习Rhino.Mocks抽象的语法的成本低。因此,我建议你除非能够确认你每天(至少每周)都要用到Mock对象。否则,建议不要使用Mock类库。...因为,我认为需要测试的方法一定具有以下几个特点中的至少一个: 它有出错的可能。 它具有的复用的可能。 它具有变化的可能。...对于第一点,我认为应该是可以通过对public成员的测试来完成对该private方法的测试的。而二三两点,正是抽象的用武之地。抽象的重要目的就是在封装变化和复用。

    77580

    浅谈前端测试

    success run console.log', () => {  mocks.fs.readFileSync.mockImplementation(() => this.mocks.other.text...对象,用来模拟数据,由于 readFileSync 方法可能存在多种返回结果(成功或报错),所以暂时用 jest.fn() 模拟   other 里面则是放一些固定的测试数据(不会随着测试过程而改变)...的返回形式,这里使用的 mockImplementation 是直接模拟了一个执行函数,当然也可以模拟返回值,具体可以到 jest 官网   expect 用来断言我们的 console.log 方法执行了...解释了这么多测试新手们应该也都看的明白了,下面聊一下错在哪,怎么改进   1.mockImplementation 最好替换为 mockReturnValueOnce,注意这里出现了 Once 结尾,也就是仅模拟一次返回值...,mockImplementation 最好使用在复杂场景,所谓的复杂就是我们手动实现一个 readFileSync 方法使得测试达到我们预期的目的,在这个简单的场景里面我们只需要模拟返回值就好   2

    1.7K10
    领券