【发布时间】:2021-12-24 22:21:04
【问题描述】:
数据库接口:
public interface IDatabase:
{
List<string> GetXmlNames(string OrderNumber);
}
数据库的实现:
class Database: IDatabase
{
public List<string> GetXmlNames(string OrderNumber)
{
var XmlName = new List<string>();
XmlName.Add("CustomerXmlFileName");
XmlName.Add("GeneratedXmlFileName");
return XmlName;
}
}
从数据库中获取 Xml 名称的函数 - 它以订单号为参数并返回一个字符串列表(2个Xml名称)
public class RetrieveXmlService
{
public List<string> RetrieveXmlFileName(string OrderNumber)
{
Database db = new Database();
var Xmlname = db.GetXmlNames(OrderNumber);
return Xmlname;
}}
正面场景的测试用例 - 我正在发送订单号并获取 2 个 Xml 名称。
public void RetrieveXmlFileNameTest()
{
var expected = new List<string>();
expected.Add("CustomerXmlFileName");
expected.Add("GeneratedXmlFileName");
var mock = new Mock<ICosmosDb>();
mock.Setup(p => p.GetXmlNamesForOrderNumber("100")).Returns(expected);
RetrieveXmlService retrieveXmlService = new RetrieveXmlService();
List<string> actual = retrieveXmlService.RetrieveXmlFileName("100");
Assert.AreEqual(expected, actual);
}
要做的事情 - 如何为负场景创建测试用例 - 如果函数没有返回 Xml 名称(null Xmlname)
【问题讨论】:
-
mock.Setup(p => p.GetXmlNamesForOrderNumber("-100")).Returns(null)(或.Returns(new List<string>())? -
public void RetrieveXmlFileNameTest() { var expected = new List<string>(); var mock = new Mock<ICosmosDb>(); mock.Setup(p => p.GetXmlNamesForOrderNumber("100")).Returns(new List<string>); RetrieveXmlService retrieveXmlService = new RetrieveXmlService(); List<string> actual = retrieveXmlService.RetrieveXmlFileName("100"); Assert.AreEqual(expected, actual); }这个方法我试过了,但是测试用例失败了
标签: c# .net unit-testing .net-core nunit