首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何清除之前对对象的期望?

如何清除之前对对象的期望?
EN

Stack Overflow用户
提问于 2009-04-20 20:44:10
回答 1查看 15.4K关注 0票数 63

我想设置一个返回值

代码语言:javascript
复制
_stubRepository.Stub(Contains(null)).IgnoreArguments().Return(true);

但是在特定的测试中,覆盖该期望以返回false。

类似于:

代码语言:javascript
复制
_stubRepository.ClearExpectations();  //<- this does not exist, I'm just making something up
_stubRepository.Stub(Contains(null)).IgnoreArguments().Return(false);

注意,我不希望期望在第二次调用时返回false,我希望覆盖第一个期望。

这将大大简化我的测试场景。

EN

回答 1

Stack Overflow用户

发布于 2012-07-03 00:24:51

对于这些情况,我创建了一个简单的RinoMocks扩展方法,以便更好地显示存根的意图并提高可读性。

代码语言:javascript
复制
public static void OverridePrevious<T>(this IMethodOptions<T> options)
{
    options.Repeat.Any();
}

因此,不是像下面这样需要注释的神秘调用:

代码语言:javascript
复制
[SetUp]
public void Setup()
{
    carStub.Stub(x => x.Model).Return("Model1");
    carStub.Stub(x => x.Model).Return("Model2");
}

[Test]
public void SomeTest()
{
    //Arrange
    //overrides previous stubs that were setup for the Model property
    carStub.Stub(x => x.Model).Return(null).Repeat.Any();

    //Act
    //Assert
}

您可以获得一个可读性更好的测试,它可以更好地显示.Repeat.Any()调用的意图:

代码语言:javascript
复制
carStub.Stub(x => x.Model).Return(null).OverridePrevious();
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/770013

复制
相关文章

相似问题

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