मुझे यह निर्धारित करने के लिए किसी दिए गए संग्रह पर एक अभिव्यक्ति चलाने की आवश्यकता है कि कोड में अभिव्यक्ति सही तरीके से लिखी गई है या नहीं। उदाहरण के लिए, मैं कुछ अनावश्यक संदर्भ छोड़ने जा रहा हूं, लेकिन अगर किसी को इसकी ज़रूरत है, तो बस टिप्पणी करें और मैं प्रश्न संपादित कर दूंगा और जो भी आपको चाहिए उसे जोड़ दूंगा।विधि समूह त्रुटि प्राप्त किए बिना मैं इस अभिव्यक्ति को Moq के साथ कैसे बना सकता हूं?
चलो कहते हैं कि मैं निम्नलिखित हैं:
public interface IRepository
{
IQueryable<T> Query<T>(Expression<Func<T, bool>> expression);
}
public class Repository : IRepository
{
public IQueryable<T> Query<T>(Expression<Func<T, bool>> expression)
{
return _session.Query<T>(expression);
}
}
और मैं निम्नलिखित की तरह एक कल्पना लिखना चाहते हैं:
internal class when_executing_some_query : given_some_repository_context
{
Establish context =() =>
{
IQueryable<SomeObject> objects = new List<SomeObject>
{
SomeObject1,
SomeObject2,
SomeObject3,
}.AsQueryable();
_expectedList = new List<SomeObject>
{
SomeObject1,
SomeObject2,
};
MockedRepository.Setup(x => x.Query<SomeObject>(Moq.It.IsAny<Expression<Func<SomeObject, bool>>>)
.Callback<Expression<Func<SomeObject, bool>>>(expression => _actualExpression = expression);
}
Because of =() => _actualList = objects.Select(_actualExpression).ToList();
It should_execute_on_queryable_and_return_the_expected_items =() => //compare _expectedList with _actualList
}
हालांकि, मैं Moq.It.IsAny<Expression<Func<SomeObject, bool>>>
पर त्रुटियों का निर्माण हो रही है कह
लिए अच्छी अतिभारित विधि मैच 'Project.Domain.IRepository.Query (System.Linq.Expressions.Expression>) है कुछ ऐसी अमान्य तर्क
और
तर्क 1: 'विधि समूह' से
को परिवर्तित नहीं कर सकते 'System.Linq.Expressions.Expression>' `
उफ़, कि करने के लिए पोस्ट करने के लिए कोड "सामान्य बनाने" के प्रयास में सिर्फ एक टाइपो था, धन्यवाद उनका कहना है कि बाहर के लिए, मैं उसके अनुसार संपादित कर लिया है –