简体   繁体   English

起订量设置方法在回调时失败

[英]Moq setup method failing on callback

My unit test is failing on setup method我的单元测试在设置方法上失败

var myMock = new Mock<IMyInterface<IImportLine>>();
        myMock.Setup(m => m.StartExecution(It.IsAny<Func<Stream, IMyInterface<IImportLine>, bool>>(), null))
                     .Callback<Func<Stream, IMyInterface<IImportLine>, bool>>(action => action(null, new IMyInterface<IImportLine>()));

IMyInterface looks like below IMyInterface 如下所示

public interface IImportTransport<T> where T : IImportLine
{
    void StartExecution(Func<Stream, ImportOperation<T>, bool> processor, string id = null);
}

The error message is System.ArgumentException : Invalid callback.错误消息是System.ArgumentException : Invalid callback。 Setup on method with parameters (Func3,String) cannot invoke callback with parameters (Func3).设置带参数的方法(Func3,String)不能调用带参数的回调(Func3)。

How do we fix this?我们如何解决这个问题?

You need to provide an argument to your callback that corresponds to the id parameter (even though you know it'll be null).您需要为您的回调提供一个与id参数相对应的参数(即使您知道它将为空)。

myMock.Setup(m => m.StartExecution(It.IsAny<Func<Stream, IImportTransport<IImportLine>, bool>>(), null))
    .Callback<Func<Stream, IImportTransport<IImportLine>, bool>, string>(
        (action, id) => action(null, new ImportOperation<IImportLine>()));

Since you aren't using that parameter, you can use a discard if you like.由于您没有使用该参数,因此您可以根据需要使用丢弃

myMock.Setup(m => m.StartExecution(It.IsAny<Func<Stream, IImportTransport<IImportLine>, bool>>(), null))
    .Callback<Func<Stream, IImportTransport<IImportLine>, bool>, string>(
        (action, _) => action(null, new ImportOperation<IImportLine>()));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM