In order to control the behavior of a mock object (in Moq, at least), you either need to mock an interface, or make sure that the behavior you’re trying to control is marked virtual. In your comment, I understand it so that the instantiating of _mockArticleDao
is done something like this:
_mockArticleDao = new Mock<ArticleDAO>();
If you want to keep it as so, you need to mark the GetArticle
method virtual
:
public class ArticleDAO : GenericNHibernateDAO(IArticle, int>, IArticleDAO
{
public virtual IArticle GetByTitle(string title)
{
// ...
}
}
Otherwise (and this is what I recommend), mock the interface instead.
_mockArticleDao = new Mock<IArticleDAO>();