System.NotSupportedException: es wurde ein Ungültiger setup auf einem non-virtual (overridable in VB) Mitglied

Ich bin immer eine NotSupportedException-Fehlermeldung auf meinem Unit-Test mit Moq

System.NotSupportedException: es wurde ein Ungültiger setup auf einem non-virtual (overridable in VB) Mitglied

Unit-Test-Code:

[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);

Einen Vorschlag, dieser Beitrag sagt zu markieren es als virtual, aber ich bin mir nicht sicher, was muss markiert werden, die als virtuelle?

Den Fehler geschieht in dieser Zeile:

  dataAccess.Setup(m => m.Stocks).Returns(mockSetStock.Object);
  • In welcher Zeile du diese Fehlermeldung bekommen?
  • Basis-code scheint, dass Sie mithilfe von Entity framework. wenn ja, ist die problematische Zeile ist ׳dataAccess.Setup - (m => m.Aktien).Gibt(mockSetStock.Objekt);׳. Sie können nicht fake diese Linie, die mit ׳Moq׳. (ich glaube, dataAccess ist StocksModelContext : DbContext{ public DbSet<Stock> Vorräte{ get; set; } })
  • Die Störung Auftritt auf Linie dataAccess.Setup - (m => m.Aktien).Gibt(mockSetStock.Objekt); ich bin mit EntityFramework var dataAccess = new Mock<TjiContext>(); public DbSet<Stock> Vorräte { get; set; } So kann die Zeile geändert werden, oder muss ich einen anderen Weg finden, um zu testen, ohne Verwendung von Moq?
InformationsquelleAutor Frazer | 2015-06-19
Schreibe einen Kommentar