繁体   English   中英

在 Moq 中调用 Setup() 时出现 System.NotSupportedException

[英]System.NotSupportedException while calling Setup() in Moq

我正在尝试从 asp.net 核心设置 IOptionsMonitor 中的 OnChange 方法。 但这对我来说并不明显,为什么 Setup() 不起作用。 顺便说一句,我在这里看到了类似的例子System.NotSupportedException: Unsupported expression: p => (p.UserProfileId == 1)而且我几乎都一样。 错误的原因是什么?

执行代码:

var optionMonitorMock = new Mock<IOptionsMonitor<MyConfig>>();

optionMonitorMock
    .Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig>>()));

代码出现异常:

System.NotSupportedException。 不支持的表达式:mock => mock.OnChange< MyConfig>(It.IsAny< Action< MyConfig>>()) 扩展方法(此处:OptionsMonitorExtensions.OnChange)不能在设置/验证表达式中使用。

asp.net的界面:

public interface IOptionsMonitor<out TOptions>
{
    TOptions CurrentValue { get; }
    TOptions Get(string name);
    IDisposable OnChange(Action<TOptions, string> listener);
}

该模型:

public class MyConfig
{
    public int Id { get; set; }
    public string Options { get; set; }
}

接口只暴露IDisposable OnChange(Action<TOptions, string> listener); . 你的例外说

扩展方法(此处:OptionsMonitorExtensions.OnChange)不能在设置/验证表达式中使用。

因此,您将不得不使用具有该方法的安装程序。

optionMonitorMock
    .Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig,string>>()));

暂无
暂无

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

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