이 문제를 어떻게 해결할 수 있는지 확실하지 않고 "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를 조롱했습니다. DAO는 클래스를 사용하여 수행되었습니다.
—
mrblah 2009
@tomas 설정 코드로 질문을 업데이트했습니다.
—
mrblah 2009
내 대답에서 볼 수 있듯이 인터페이스를 모의 (내가 권장하는 것)하거나
—
Tomas Aschan 2009
GetByTitle
방법을 표시해야 합니다 virtual
.
또한 테스트의 첫 번째 줄이 설정 루틴으로 이동할 수있는 것처럼 보입니다 ...?
—
Tomas Aschan 2009
_mockDaoFactory
하고_mockArticleDao
어딘가에 있습니까? 수업이나 인터페이스를 조롱합니까