Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JustMock捕获CallOriginal的返回值_C#_Asp.net_.net_Unit Testing_Justmock - Fatal编程技术网

C# JustMock捕获CallOriginal的返回值

C# JustMock捕获CallOriginal的返回值,c#,asp.net,.net,unit-testing,justmock,C#,Asp.net,.net,Unit Testing,Justmock,我想知道是否有一种方法/解决方法能够在JustMock中捕获Arrange调用的输出 e、 g.这是我想做的事情: Mock.Arrange(() => foo.Bar()).CallOriginal(result => { /* stuff I want to do with the result */ }); 实际上,我已经做了一些类似的事情来捕获参数,但是正如我所说的,我还没有弄清楚如何捕获返回值。以下是如何捕获参数: string myVar; void Setup()

我想知道是否有一种方法/解决方法能够在JustMock中捕获Arrange调用的输出

e、 g.这是我想做的事情:

Mock.Arrange(() => foo.Bar()).CallOriginal(result => { /* stuff I want to do with the result */ });
实际上,我已经做了一些类似的事情来捕获参数,但是正如我所说的,我还没有弄清楚如何捕获返回值。以下是如何捕获参数:

string myVar;

void Setup() {
    Mock.Arrange(() => foo.Bar(Arg.Matches<string>(val => Capture(val))).CallOriginal();
}

private boolean Capture(string val) {
    myVar = val;
    // any other stuff
    return true;
}
字符串myVar;
无效设置(){
Mock.Arrange(()=>foo.Bar(Arg.Matches(val=>Capture(val))).CallOriginal();
}
私有布尔捕获(字符串val){
myVar=val;
//还有别的吗
返回true;
}
编辑:找到了一个(荒谬的)解决方案。把这个问题留着,以备其他人需要,或者如果其他人找到更好的方法

bool callOriginal = false;
string myVar;
string myRes;

void Setup() {
    Mock.Arrange(() => foo.Bar(Arg.Matches<string>(val => Capture(val))).Returns(() => CallOriginalMethod());
    Mock.Arrange(() => foo.Bar(Arg.Matches<string> val => CallOriginal()
}

private boolean Capture(string val) {
    if (callOriginal) return false;
    myVar = val;
    // any other stuff
    return true;
}
private boolean CallOriginal() {
    return callOriginal;
}
private string CallOriginalMethod() {
    callOriginal = true;
    var res = foo.Bar(myVar); //here we get the return value
    myRes = res;
    callOriginal = false;
    return res;
}
bool callOriginal=false;
字符串myVar;
串八哥;
无效设置(){
Mock.Arrange(()=>foo.Bar(Arg.Matches(val=>Capture(val)))。返回(()=>CallOriginalMethod());
Mock.Arrange(()=>foo.Bar(Arg.Matches val=>CallOriginal()
}
私有布尔捕获(字符串val){
如果(callOriginal)返回false;
myVar=val;
//还有别的吗
返回true;
}
私有布尔CallOriginal(){
返回原件;
}
私有字符串CallOriginalMethod(){
callOriginal=true;
var res=foo.Bar(myVar);//这里我们得到了返回值
myRes=res;
callOriginal=false;
返回res;
}
这不适用于多线程应用程序,但它适用于我所需要的