Không chắc tôi có thể khắc phục sự cố này bằng cách nào, đang cố gắng thực hiện kiểm tra đơn vị trên phương pháp "GetByTitle"
Đây là định nghĩa của tôi:
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);
}
kiểm tra đơn vị:
[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);
}
Chạy thử nghiệm cho tôi lỗi:
System.ArgumentException: Invalid setup on a non-overridable member:
x => x.GetByTitle("some title")
Cập nhật
Tôi [Setup]
trông giống như:
[Setup]
public void SetUp()
{
_mockDaoFactory = new Mock<IDaoFactory>();
_mockArticleDao = new Mock<ArticleDao>();
_articleManager = new ArticleManager(_mockDaoFactory.Object);
}
Có, tôi đã chế nhạo daofactory và mockarticleDao trong [Thiết lập] bằng Giao diện. DAO đã được thực hiện bằng cách sử dụng lớp.
—
mrblah 25/12/09
@tomas Tôi đã cập nhật câu hỏi của mình bằng mã thiết lập.
—
mrblah
Như bạn có thể thấy trong câu trả lời của tôi, bạn cần phải mô phỏng giao diện (đó là những gì tôi đề xuất) hoặc đánh dấu
—
Tomas Aschan
GetByTitle
phương pháp virtual
.
Có vẻ như dòng đầu tiên trong thử nghiệm của bạn có thể được chuyển sang quy trình thiết lập ...?
—
Tomas Aschan 25/12/09
_mockDaoFactory
và_mockArticleDao
ở đâu đó không? Bạn có chế nhạo lớp học hay giao diện không