निश्चित नहीं है कि मैं इसे कैसे ठीक कर सकता हूं, "GetByTitle" विधि पर एक इकाई परीक्षण करने की कोशिश कर रहा हूं
यहाँ मेरी परिभाषाएँ हैं:
public class ArticleDAO : GenericNHibernateDAO(IArticle, int>, IArticleDAO
{
public IArticle GetByTitle(string title)
{
IQuery query = Session.CreateQuery("...")
return query.UniqueResult<IArticle>();
}
}
public interface IArticleDAO
{
IArticle GetByTitle(string title);
}
अध्याय परीक्षा:
[Test]
public void can_load_by_title()
{
_mockDaoFactory.Setup(x => x.GetArticleDao())
.Returns(_mockArticleDao.Object);
_mockArticleDao.Setup(x => x.GetByTitle("some title"))
.Returns(article1.Object);
_articleManager.LoadArticle("some title");
Assert.IsNotNull(_articleManager.Article);
}
परीक्षण चलाने से मुझे त्रुटि मिलती है:
System.ArgumentException: Invalid setup on a non-overridable member:
x => x.GetByTitle("some title")
अपडेट करें
मेरी [Setup]
तरह दिखता है:
[Setup]
public void SetUp()
{
_mockDaoFactory = new Mock<IDaoFactory>();
_mockArticleDao = new Mock<ArticleDao>();
_articleManager = new ArticleManager(_mockDaoFactory.Object);
}
हां, मैंने इंटरफ़ेस का उपयोग करके [सेटअप] में डीओफैक्टिक और मॉकार्टिकलडॉ का मजाक उड़ाया। डीएओ वर्ग का उपयोग करके किया गया था।
—
मर्बल्लाह
@tomas मैंने सेटअप कोड के साथ अपना प्रश्न अपडेट किया।
—
मर्बल्लाह
जैसा कि आप मेरे जवाब में देख सकते हैं, आपको इंटरफ़ेस को या तो मॉक करने की ज़रूरत है (यही वह है जो मैं सुझाता हूं) या
—
टॉमस असचन
GetByTitle
विधि को चिह्नित करता हूं virtual
।
यह भी दिखता है कि क्या आपके परीक्षण में पहली पंक्ति को सेटअप रूटीन में स्थानांतरित किया जा सकता है ...?
—
टॉमस असचन
_mockDaoFactory
और_mockArticleDao
कहीं? क्या आप क्लास या इंटरफ़ेस का मजाक उड़ाते हैं