"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);
}
হ্যাঁ আমি ইন্টারফেসটি ব্যবহার করে [সেটআপ] এ দাওফ্যাক্টরি এবং মকনারিক্যালডাওকে উপহাস করেছি। ডিএও ক্লাসটি ব্যবহার করে করা হয়েছিল।
—
mrblah
@ টমাস আমি সেটআপ কোড দিয়ে আমার প্রশ্ন আপডেট করেছি।
—
mrblah
আপনি আমার উত্তরে দেখতে পাচ্ছেন, আপনাকে ইন্টারফেসটি উপহাস করতে হবে (এটি আমি প্রস্তাবিত) বা
—
টমাস আসচান
GetByTitle
পদ্ধতিটি চিহ্নিত করতে হবে virtual
।
দেখে মনে হচ্ছে আপনার পরীক্ষার প্রথম লাইনটি সেটআপ রুটিনে সরানো যেতে পারে ...?
—
টমাস আসচান
_mockDaoFactory
এবং_mockArticleDao
কোথাও? আপনি কি ক্লাস বা ইন্টারফেসকে উপহাস করছেন