मैं परीक्षण उद्देश्यों के लिए एक नकली डीबीसेट स्थापित करने की कोशिश कर रहा हूं। मैंने यहां ट्यूटोरियल का इस्तेमाल किया, http://www.loganfranken.com/blog/517/mocking-dbset-queries-in-ef6/ और इसे थोड़ा संशोधित किया ताकि कॉल करने के लिए GetEnumerator प्रत्येक बार एक नया गणक लौटाता है (एक और समस्या जो मैं कर रहा था)। हालांकि, मुझे डीबीसेट में आइटम जोड़ने में कठिनाई हो रही है।किसी मॉक डीबीसेट (एमओक का उपयोग करके) में कोई आइटम कैसे जोड़ें
आउटपुट प्रीकाउंट = 3 पोस्टकाउंट = 3. है, हालांकि, मुझे उम्मीद है कि यह सटीक = 3 पोस्टकाउंट = 4. किसी भी मदद की सराहना की जाएगी।
static void Main(string[] args)
{
Debug.WriteLine("hello debug");
List<string> stringList = new List<string>
{
"a", "b", "c"
};
DbSet<string> myDbSet = GetQueryableMockDbSet(stringList);
int preCount = myDbSet.Count();
myDbSet.Add("d");
int postCount = myDbSet.Count();
Debug.WriteLine("preCount = " + preCount + " postCount = " + postCount);
}
private static DbSet<T> GetQueryableMockDbSet<T>(List<T> sourceList) where T : class
{
var queryable = sourceList.AsQueryable();
var dbSet = new Mock<DbSet<T>>();
dbSet.As<IQueryable<T>>().Setup(m => m.Provider).Returns(queryable.Provider);
dbSet.As<IQueryable<T>>().Setup(m => m.Expression).Returns(queryable.Expression);
dbSet.As<IQueryable<T>>().Setup(m => m.ElementType).Returns(queryable.ElementType);
dbSet.As<IQueryable<T>>().Setup(m => m.GetEnumerator()).Returns(() => queryable.GetEnumerator());
return dbSet.Object;
}
बहुत अच्छा विधि dbSet बनाने संपुटित करने के लिए। एसिंक क्वेरी का समर्थन करने के लिए आपने इसे अपडेट किया है? –
कम से कम इस समय के लिए .NET कोर 1.0 के साथ, एसिंक समस्या का उत्तर देगा: [एंटीटी फ्रेमवर्क कोर के साथ एसिंक रेपॉजिटरी को कैसे नकल करें] (https://stackoverflow.com/questions/40476233/how-to-mock -an-async-repository-with-entity-framework-core) –