ไม่แน่ใจว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรโดยพยายามทดสอบหน่วยในเมธอด "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);
}
ใช่ฉันล้อเลียน daofactory และ mockarticleDao ใน [Setup] โดยใช้อินเทอร์เฟซ DAO ทำโดยใช้คลาส
—
mrblah
@tomas ฉันอัปเดตคำถามของฉันด้วยรหัสการตั้งค่า
—
mrblah
ที่คุณสามารถดูในคำตอบของฉันคุณต้องทั้งเยาะเย้ยอินเตอร์เฟซ (นั่นคือสิ่งที่ผมขอแนะนำ) หรือเครื่องหมายของวิธีการ
—
Tomas Aschan
GetByTitle
virtual
ดูเหมือนว่าบรรทัดแรกในการทดสอบของคุณสามารถย้ายไปที่ขั้นตอนการตั้งค่าได้ ... ?
—
Tomas Aschan
_mockDaoFactory
และ_mockArticleDao
ที่ไหนสักแห่ง? คุณล้อเลียนชั้นเรียนหรืออินเทอร์เฟซ