で無効な設定を持っている私はユニットテストIdentityDbContextからMOQ:プロパティが正しく仮想として設定したが、まだ非仮想メンバ
を継承DbContextしたいのですが、私はとNotSupportedException
エラーメッセージを取得しています非常に一般的なメッセージ:
System.NotSupportedException:私はすでに再いくつかの手がかりを見つけるために、非仮想(オーバーライドVBで)メンバー
上の無効なセットアップ広告の投稿の束。ここではいくつかのサンプルは以下のとおりです。
もちろん、ソリューションは、仮想としてdbSetを設定に表示されます。私がやったこと。
不運なので、エラーが残ります。ここで
は私のIdentityDataContextである:ここでは
public class IdentityDataContext : IdentityDbContext<ApplicationUser>
{
public virtual DbSet<Search> Searches { get; set; }
public IdentityDataContext()
: base("LocalDb",
throwIfV1Schema: true)
{
}
public static IdentityDataContext Create()
{
return new IdentityDataContext();
}
}
は私の検索 POCOです:最後にここ
public class Search : BaseEntity
{
//BaseEntity is just an abstract class with createdAt,Id,updatedAt property
public string ConsumerIdentifier { get; set; }
public string LanguageCode { get; set; }
}
は私のセットアップは方法です:
[TestInitialize]
public void SetupTest()
{
//DataInitializer.GetAllSearches() returns a List of "Search"
_searches = DataInitializer.GetAllSearches();
var dbSet = new Mock<DbSet<Search>>();
dbSet.As<IQueryable<Search>>().Setup(m => m.Provider).Returns(_searches.AsQueryable().Provider);
dbSet.As<IQueryable<Search>>().Setup(m => m.Expression).Returns(_searches.AsQueryable().Expression);
dbSet.As<IQueryable<Search>>().Setup(m => m.ElementType).Returns(_searches.AsQueryable().ElementType);
dbSet.As<IQueryable<Search>>().Setup(m => m.GetEnumerator()).Returns(_searches.AsQueryable().GetEnumerator());
dbSet.Setup(d => d.Add(It.IsAny<Search>())).Callback<Search>(_searches.Add);
_dataContextMock = new Mock<IdentityDataContext>()
{
CallBase = true
};
// The error appears here ---------------- _
dataContextMock.Setup(x => x.Searches).Returns(dbSet.Object);
//----------------------------------------------------------------------
_dataContextMock.Setup(x => x.Set<Search>()).Returns(dbSet.Object);
_searchRepository = new SearchRepository(_dataContextMock.Object);
}
私は何が欠けていますか?
感謝をテストするためのより多くの柔軟性を可能にします。それは私が考えなかったアプローチです。 MSDNでこの[記事](https://msdn.microsoft.com/en-us/library/dn314429(v=113).aspx#Anchor_7)を読んでいます。私はなぜこの他のアプローチが私の場合にはうまくいかないのだろうと思っていますか? 基本的に、私はリポジトリと作業単位の設計パターンを実装している間にサービスを使用します。しかし、それらはモデルの管理という同じ目的を持っています。私が間違っている ? – BertrandD