Non sono sicuro di come posso risolvere questo problema, cercando di fare un test di unità sul metodo "GetByTitle"Moq: l'installazione non valido su un membro non-override: x => x.GetByTitle ("asdf")
Qui sono le mie definizioni: prova
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);
}
unità:
[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);
}
Esecuzione del test mi dà l'errore:
System.ArgumentException: Invalid setup on a non-overridable member:
x => x.GetByTitle("some title")
Aggiornamento
mio [Setup]
assomiglia:
[Setup]
public void SetUp()
{
_mockDaoFactory = new Mock<IDaoFactory>();
_mockArticleDao = new Mock<ArticleDao>();
_articleManager = new ArticleManager(_mockDaoFactory.Object);
}
fare si crea un'istanza di '' _mockDaoFactory' e _mockArticleDao' da qualche parte? Prendi in giro la classe o l'interfaccia –
Sì, ho deriso il daofactory e il mockarticle nel [Setup] utilizzando l'interfaccia. il DAO è stato fatto usando la classe. – mrblah
@tomas Ho aggiornato la mia domanda con il codice di configurazione. – mrblah