Не впевнений, як я можу це виправити, намагаючись зробити одиничний тест за методом "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);
}
Так, я знущався над дафафактором та mockarticleDao у [Настройці] за допомогою інтерфейсу. DAO було зроблено за допомогою класу.
—
mrblah
@tomas Я оновив своє запитання кодом налаштування.
—
mrblah
Як ви бачите у моїй відповіді, вам потрібно або знущатися над інтерфейсом (саме це я рекомендую), або позначити
—
Томаш Ашан
GetByTitle
метод virtual
.
Це також виглядає так, якби перший рядок у вашому тесті міг би бути переміщений у процедуру налаштування ...?
—
Томаш Ашан
_mockDaoFactory
і_mockArticleDao
десь? Ви знущаєтесь над класом чи інтерфейсом