解决方法:
使用AutoFixture.Freeze方法可以冻结Mock对象的IEnumerable。下面是一个示例代码:
using AutoFixture;
using Moq;
using System.Collections.Generic;
public class MyClass
{
private IEnumerable myInterfaceList;
public MyClass(IEnumerable myInterfaceList)
{
this.myInterfaceList = myInterfaceList;
}
public void DoSomething()
{
foreach (var myInterface in myInterfaceList)
{
myInterface.DoSomething();
}
}
}
public interface IMyInterface
{
void DoSomething();
}
public class MyTestClass
{
public void TestMethod()
{
var fixture = new Fixture();
var mockInterface = fixture.Freeze>();
var myClass = fixture.Create();
myClass.DoSomething();
mockInterface.Verify(x => x.DoSomething(), Times.Once);
}
}
在上面的代码中,我们使用AutoFixture创建了一个Fixture对象。然后我们使用Fixture的Freeze方法将IMyInterface接口的Mock对象冻结,以便在测试中可以访问它。
然后,我们使用Fixture的Create方法创建了一个MyClass对象,自动填充了其构造函数参数。在这种情况下,我们的构造函数需要一个IEnumerable
最后,我们调用了myClass的DoSomething方法,并使用Mock对象的Verify方法验证了DoSomething方法被调用了一次。
这样,我们就可以在测试中使用冻结的Mock对象的IEnumerable。
上一篇:AutoFixture.AutoNSubstitute不会自动生成接口属性的数据。
下一篇:Autofixture.NSubstitutecheckreceivedcallswithoutfreezing