如何以编程方式更改方法

时间:2013-11-24 02:43:22

标签: c# wcf

我正在编写一个测试应用程序来测试服务中的操作合同

测试客户:

这是我如何从我的测试中调用以获取返回的bool值

   bool operateResult =  TestContext.ServiceOperator.Operate(ref Inputmessage);

服务:

上面的操作方法调用另一种方法

      bool  Operate(){
        OperatorProcess(msg, interface);
      }

        private bool OperatorProcess(ref Message MessageData, string SendInterface)
        {
        parse(message);
        validate(message);
        Transfer(message);
        }

从我的测试中,我的目标是测试操作符方法,但在进程操作符中我不想这样做             到达转移(消息)我希望它在验证后立即退出并获得结果。

如何从我的测试应用程序中以编程方式修改它?感谢

注意:transfer方法将解析和验证的方法发送到另一个服务,我想阻止它将请求发送到该服务。

2 个答案:

答案 0 :(得分:3)

为什么不尝试扩展包含OperationProcess函数的类并覆盖该函数,然后调用被覆盖的函数,该函数只执行您关心的几个部分...您可以保留您关心的函数中的部分并且只有您需要测试的功能。

C# examples on how to override

答案 1 :(得分:1)

您可以声明一个全局布尔变量测试,然后在测试期间将其设置为true,并在生产期间将其设置为false,那么您的方法将类似于

private bool OperatorProcess(ref Message MessageData, string SendInterface)
{
    parse(message);
    validate(message);
    if(!TEST)  Transfer(message);
}

或者,如果您不想创建全局变量,那么您只需在方法签名中添加一个参数

private bool OperatorProcess(ref Message MessageData, string SendInterface, bool performTransfer)
{
    parse(message);
    validate(message);
    if(performTransfer)  Transfer(message);
}