Não sei como posso corrigir isso, tentando fazer um teste de unidade no método "GetByTitle"
Aqui estão minhas definições:
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);
}
teste de unidade:
[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);
}
Executar o teste me dá o erro:
System.ArgumentException: Invalid setup on a non-overridable member:
x => x.GetByTitle("some title")
Atualizar
Minha [Setup]
aparência é:
[Setup]
public void SetUp()
{
_mockDaoFactory = new Mock<IDaoFactory>();
_mockArticleDao = new Mock<ArticleDao>();
_articleManager = new ArticleManager(_mockDaoFactory.Object);
}
Sim, eu zombei do daofactory e mockarticleDao no [Setup] usando a Interface. o DAO foi feito usando a classe.
—
mrblah
@tomas Eu atualizei minha pergunta com o código de configuração.
—
mrblah
Como você pode ver na minha resposta, você precisa simular a interface (é o que eu recomendo) ou marcar o
—
Tomas Aschan
GetByTitle
método virtual
.
Também parece que a primeira linha em seu teste pode ser movida para a rotina de configuração ...?
—
Tomas Aschan
_mockDaoFactory
e em_mockArticleDao
algum lugar? Você zomba da classe ou da interface