Fra*_*zer 2 c# unit-testing moq
我使用Moq在单元测试中收到NotSupportedException错误消息
System.NotSupportedException:非虚拟(在VB中可覆盖)成员上的无效设置
单元测试代码:
[TestMethod]
public void TestEmailNotSentOut()
{
// ...
var dataAccess = new Mock<TjiContext>();
var mockSetStock = new Mock<DbSet<Stock>>();
mockSetStock.As<IQueryable<Stock>>().Setup(m => m.Provider).Returns(stockList.Provider);
mockSetStock.As<IQueryable<Stock>>().Setup(m => m.Expression).Returns(stockList.Expression);
mockSetStock.As<IQueryable<Stock>>().Setup(m => m.ElementType).Returns(stockList.ElementType);
mockSetStock.As<IQueryable<Stock>>().Setup(m => m.GetEnumerator()).Returns(stockList.GetEnumerator());
dataAccess.Setup(m => m.Stocks).Returns(mockSetStock.Object);
Run Code Online (Sandbox Code Playgroud)
这篇文章中的一个建议是将其标记为virtual,但我不确定需要将哪些标记为虚拟?
错误发生在此行:
dataAccess.Setup(m => m.Stocks).Returns(mockSetStock.Object);
Run Code Online (Sandbox Code Playgroud)
假设您正在使用至少为V6的EF并且基于此示例(查看Blogs元素),这对您做了非常类似的事情.我猜你的问题是你的dataAccess,无论它是什么都没有声明Stocks为虚拟.
所以看起来应该是这样的:
public virtual DbSet<Stock> Stocks { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6271 次 |
| 最近记录: |