使用Moq进行此单元测试的帮助 [英] Help with this unit test using Moq
本文介绍了使用Moq进行此单元测试的帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
到目前为止,我正在尝试进行以下单元测试:
I have the following so far which I am trying to unit test:
private Mock<IDBFactory> _mockDbFactory;
private IArticleManager _articleManager;
[Setup]
public Setup()
{
_mockDbFactory = new Mock<IDBFactory>();
_articleManager = new ArticleManager(_mockDbFactory);
}
[Test]
public void load_article_by_title()
{
string title = "sometitle";
// _dbFactory.GetArticleDao().GetByTitle(title); <!-- need to mock this
_mockDBFactory.Setup(x => x.GetArticleDao().GetByTitle(It.IsAny<string>()));
_articleManager.LoadArticle(title);
Assert.IsNotNull(_articleManager.Article);
}
我得到了错误:
无效的不可覆盖成员设置:
Invalid setup of a non-overridable member:
推荐答案
您需要为GetArticleDao返回的对象提供一个模拟.像这样:
You need to provide a mock for the object returned by GetArticleDao. Something like this:
var _mockDao = new Mock<IArticleDao>();
_mockDao.Setup(x => x.GetByTitle("test")).Returns("A test title");
_mockDBFactory.Setup(x => x.GetArticleDao).Returns(_mockDao);
语法来自内存,因此可能已关闭.如果GetByTitle返回一个对象,则还需要为其提供一个模拟实现.
The syntax is from memory so it may be off. If GetByTitle returns an object you will need to provide a mock implementation for it as well.
这篇关于使用Moq进行此单元测试的帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文