我遇到了一个问题,我尝试模拟一个包含Items
type 属性的对象ICollection<>
。我收到以下错误:
System.NotSupportedException:非虚拟(在 VB 中可覆盖)成员的设置无效:m => m.Items
问题是属性Items 已经是 virtual。
我在下面的沙箱中重现了我在项目中遇到的错误:
public class ItemList
{
public virtual int Id { get; set; }
}
public class SpecialList
{
public virtual string Token { get; internal set; }
public virtual ICollection<ItemList> Items { get; private set; }
}
当我尝试SetupProperty
喜欢该错误时,我的测试中会出现该错误:
[TestFixture]
public class TestSpecialList
{
[Test]
public void Mocking_Virtual_ICollection()
{
var mockModel = new Mock<SpecialList>();
var listItem = new List<ItemList> {new ItemList {Id = 007}};
mockModel.SetupProperty(m => m.Items, listItem);
}
}
难道我做错了什么?是否可以最小化包含 ICollection<> 属性的对象?