Return 来自模拟方法的模拟
Return a Mock from a Mocked method
我不确定该怎么做。
鉴于我有
public interface IFactory<T> where T : new()
{
IWrapper<T> GetT(string s);
}
public interface IWrapper<out T> where T : new()
{
void Execute(Action<T> action);
}
当我这样做时
public class MoqTest
{
public void test()
{
Mock<IWrapper<basicClass>> wrapperMock = new Mock<IWrapper<basicClass>>();
Mock<IFactory<basicClass>> factoryMock = new Mock<IFactory<basicClass>>()
.Setup(p => p.GetT(It.IsAny<string>()))
.Returns(wrapperMock.Object);
}
}
我明白了
Cannot implicitly convert type
Moq.Language.Flow.IReturnsResult<TestNamespace.IFactory<TestNamespace.basicClass>>
to Moq.Mock<TestNamespace.IFactory<TestNamespace.basicClass>>
. An
explicit conversion exists (are you missing a cast?)
请注意,这些只是模拟的示例对象。
它似乎不认为 return 类型是等价的。一个是 IReturnResult
,另一个是 Moq.Mock
您的问题基本上是您将调用 Returns
方法的结果分配给 factoryMock
变量。
您想先创建模拟并将其分配给 factoryMock
变量,然后像这样设置模拟:
Mock<IWrapper<basicClass>> wrapperMock = new Mock<IWrapper<basicClass>>();
Mock<IFactory<basicClass>> factoryMock = new Mock<IFactory<basicClass>>();
factoryMock
.Setup(p => p.GetT(It.IsAny<string>()))
.Returns(wrapperMock.Object);
我不确定该怎么做。
鉴于我有
public interface IFactory<T> where T : new()
{
IWrapper<T> GetT(string s);
}
public interface IWrapper<out T> where T : new()
{
void Execute(Action<T> action);
}
当我这样做时
public class MoqTest
{
public void test()
{
Mock<IWrapper<basicClass>> wrapperMock = new Mock<IWrapper<basicClass>>();
Mock<IFactory<basicClass>> factoryMock = new Mock<IFactory<basicClass>>()
.Setup(p => p.GetT(It.IsAny<string>()))
.Returns(wrapperMock.Object);
}
}
我明白了
Cannot implicitly convert type
Moq.Language.Flow.IReturnsResult<TestNamespace.IFactory<TestNamespace.basicClass>>
toMoq.Mock<TestNamespace.IFactory<TestNamespace.basicClass>>
. An explicit conversion exists (are you missing a cast?)
请注意,这些只是模拟的示例对象。
它似乎不认为 return 类型是等价的。一个是 IReturnResult
,另一个是 Moq.Mock
您的问题基本上是您将调用 Returns
方法的结果分配给 factoryMock
变量。
您想先创建模拟并将其分配给 factoryMock
变量,然后像这样设置模拟:
Mock<IWrapper<basicClass>> wrapperMock = new Mock<IWrapper<basicClass>>();
Mock<IFactory<basicClass>> factoryMock = new Mock<IFactory<basicClass>>();
factoryMock
.Setup(p => p.GetT(It.IsAny<string>()))
.Returns(wrapperMock.Object);