System.NotSupportedException 在 Moq 中调用 Setup()
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.
Unsupported expression: mock => mock.OnChange< MyConfig>(It.IsAny< Action< MyConfig>>())
Extension methods (here: OptionsMonitorExtensions.OnChange) may not be used in setup / verification expressions.
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);
。你的例外说
Extension methods (here: OptionsMonitorExtensions.OnChange) may not be
used in setup / verification expressions.
所以您将不得不通过该方法使用安装程序。
optionMonitorMock
.Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig,string>>()));
我正在尝试在 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. Unsupported expression: mock => mock.OnChange< MyConfig>(It.IsAny< Action< MyConfig>>()) Extension methods (here: OptionsMonitorExtensions.OnChange) may not be used in setup / verification expressions.
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);
。你的例外说
Extension methods (here: OptionsMonitorExtensions.OnChange) may not be used in setup / verification expressions.
所以您将不得不通过该方法使用安装程序。
optionMonitorMock
.Setup(mock => mock.OnChange(It.IsAny<Action<MyConfig,string>>()));