用T的Moq.Setup方法?

时间:2014-10-03 10:13:27

标签: .net unit-testing mocking moq

我有以下方法来模拟:

AddParameter<T>(string parameterName, T value)
AddParameter<T>(string parameterName, T? value) where T : struct;


private void SetupAddParameter<T>(){
    mock.Setup(u => u.AddParameter<T>(Moq.It.IsAny<string>(), Moq.It.IsAny<T>()))...
    mock.Setup(u => u.AddParameter<T>(Moq.It.IsAny<string>(), Moq.It.IsAny<T?>())) -> not working
}

我如何模拟第二种方法?

1 个答案:

答案 0 :(得分:0)

好的,你不能在同一个方法中进行这两种设置,你需要在自己的方法中使用where T : strut限制来执行struct版本:

private void SetupAddParameter<T>()
{
    // Setup for AddParameter<T>(string parameterName, T value);
    mock.Setup(u => u.AddParameter<T>(Moq.It.IsAny<string>(), Moq.It.IsAny<T>()));
}

private void SetupAddParameter<T>() where T : struct
{
    // Setup for AddParameter<T>(string parameterName, T? value) where T : struct;
    mock.Setup(u => u.AddParameter<T>(Moq.It.IsAny<string>(), Moq.It.IsAny<T?>()));
}