多个参数在Moq中回调

use*_*013 14 moq callback

有人可以看看下面的代码,看看有什么问题吗?

    [TestInitialize]
    public void SetupMockRepository()
    {
        var memberId = "34345235435354545345";
        var title = "test";
        var url = "dafdsfdsfdsfdsafd";

        _mockPropertySearchRepository = new Mock<IPropertySearchRepository>(MockBehavior.Strict);
        _mockPropertySearchRepository.Setup(p => p.SaveSearchURL(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Callback<string,string,string>((id,t,u) =>  ).Returns(new SavedSearchReturnResult() );
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

use*_*013 24

我设法自己解决了这个问题,如下所示

[TestInitialize]
public void SetupMockRepository()
{
    var memberId = "34345235435354545345";
    var title = "test";
    var url = "dafdsfdsfdsfdsafd";


    _mockPropertySearchRepository = new Mock<IPropertySearchRepository>(MockBehavior.Strict);
    _mockPropertySearchRepository
        .Setup(p => p.SaveSearchURL(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
        .Callback<string,string,string>(
            (id, t, u) =>
            {
                memberId = id;
                title = t;
                url = u;
            })
        .Returns(new SavedSearchReturnResult());
}
Run Code Online (Sandbox Code Playgroud)


Sha*_*tin 5

对于该方法采用的每个参数,将类型参数传递给该Callback方法。

someMock
    .Protected()
    .Setup("SomeMethod", ItExpr.IsAny<string>(), ItExpr.IsAny<string>())
    .Callback<string, string>((x, y) => {});
Run Code Online (Sandbox Code Playgroud)

上面的方法适用于Protected普通回调。