नकल कर सकता हूं मैं एक संग्रह बना रहा हूं जो IQueryable का खुलासा करता है। मेरे यूनिट परीक्षण के लिए इसे मॉक करने का सबसे अच्छा तरीका क्या है?मैं कैसे IQueryable <T>
के बाद से मैं अपने नकली वस्तुओं के आराम के लिए RhinoMocks उपयोग कर रहा हूँ, मैं निम्नलिखित करने की कोशिश की:
IQueryable<MyObject> QueryObject =
MockRepository.GenerateStub<IQueryable<MyObject>>();
यह हालांकि तो मैं ऐसा करने की कोशिश की काम नहीं करता:
IQueryable<MyObject> QueryObject =
(new List<MyObject> { new MyObject() }).AsQueryable();
क्या ऐसा करने का कोई बेहतर तरीका है, या IQueryable में समर्थन के लिए कोई अन्य मॉकिंग फ्रेमवर्क बनाया गया है?
मेरे भंडार इंटरफ़ेस इस तरह दिखता है: यहाँ
public Post LoadPost(int year, int month, int day, string slug)
{
var query = from p in _blogRepository.Table
where
p.PartitionKey == Key.Partition(year, month, day)
&& p.Slug == slug
select p;
var posts = _blogRepository.Query(query.Take(1));
return posts.First();
}
फिर परीक्षण मैं इसे अभी के रूप में है कि परीक्षण किया जाएगा LoadPost है:
public interface IRepository<T> where T : TableServiceEntity
{
IQueryable<T> Table { get; }
void Attach(T existingItem);
void Delete(T itemToDelete);
void Insert(T newItem);
T Load(string partitionKey, string rowKey);
IEnumerable<T> Load(string partitionKey);
IEnumerable<T> Query(IQueryable<T> query);
IEnumerable<T> Last(int count);
T Last();
void Update(T item);
}
यहाँ विधि है कि मैं परीक्षण करना चाहते हैं ।
[Fact]
public void LoadWillRetrieveByPartitionKeyAndRowKeyWhenUsingUriFormat()
{
Repository
.Stub(x => x.Query(Arg<IQueryable<Post>>.Is.Anything))
.Return(new List<Post> {_post});
var result = Service.LoadPost(
_post.Year(),
_post.Month(),
_post.Day(),
_post.Slug);
Assert.NotNull(result);
}
कोड मेरे AzureBlog प्रोजेक्ट से लिया गया है।
क्या आप अपना परीक्षण पेस्ट कर सकते हैं? – Grzenio