首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSubstitute清除时间().Do()

NSubstitute清除时间().Do()
EN

Stack Overflow用户
提问于 2013-09-17 06:53:04
回答 1查看 2.6K关注 0票数 3

NSubstitute是否可以清除或删除以前的.When().Do()配置?

代码语言:javascript
复制
substitute.When(s => s.Method(1)).Do(c => { /* do something */ });
// code

substitute.When(s => s.Method(1)).Clear(); // <-- is this possible?
substitute.When(s => s.Method(1)).Do(c => { /* do something different */ });
// other code
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 07:32:16

查看来源CallActions,似乎没有一种方法可以删除或替换回调。

使用一个示例来证明缺乏替换功能

代码语言:javascript
复制
int state = 0;
var substitute = Substitute.For<IFoo>();

substitute.When(s => s.Bar()).Do(c => state++);
substitute.Bar();
Assert.That(state, Is.EqualTo(1));

substitute.When(s => s.Bar()).Do(c => state--);
substitute.Bar();

// FAIL: Both Do delegates are executed and state == 1
Assert.That(state, Is.EqualTo(0));

IFoo在哪里

代码语言:javascript
复制
public interface IFoo
{
    void Bar();
}

由于缺少对NSubstitute API的更改,解决办法是:

代码语言:javascript
复制
var state = 0;
var substitute = Substitute.For<IFoo>();

Action<CallInfo>[] onBar = {c => state++};

substitute.When(s => s.Bar()).Do(c => onBar[0](c));
substitute.Bar();
Assert.That(state, Is.EqualTo(1));

onBar[0] = c => state--;
substitute.Bar();
Assert.That(state, Is.EqualTo(0));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18843115

复制
相关文章

相似问题

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