【发布时间】:2017-09-13 06:19:32
【问题描述】:
在 C# 中,如何模拟对象列表?
我正在尝试一个练习,它指定在我的单元测试的安排部分中,我需要“模拟 Book 对象列表”。
创建 Book 对象的模拟列表的语法是什么?我曾尝试创建模拟 Book 对象并将它们添加到书籍列表中,但这不起作用。
public void Test_GetAllBooks_ReturnsListOfBooksItReceivesFromReadAllMethodOfReadItemCommand_WhenCalled()
{
//Arrange
Mock<ReadItemCommand> mockReadItemCommand = new Mock<ReadItemCommand>();
Catalogue catalogue = new Catalogue(mockReadItemCommand.Object);
Mock<Book> mockBook1 = new Mock<Book>();
Mock<Book> mockBook2 = new Mock<Book>();
List<Book> mockBookList = new List<Book>();
mockBookList.Add(mockBook1);
mockBookList.Add(mockBook2);
mockReadItemCommand.Setup(r => r.ReadAll()).Returns(mockBookList);
//Act
List<Book> actual = catalogue.GetAllBooks();
//Assert
Assert.AreSame(mockBookList, actual);
}
这给了我 2 个编译错误,都是 CS1503,在我尝试将模拟书籍添加到我的类型 Book 列表的两行中。
【问题讨论】:
-
在minimal reproducible example 中显示您迄今为止尝试过的内容。也许到那时,可以提供更好的帮助。该练习中的所有内容都可以在此站点中找到,因为它已经被询问过。
-
我投票决定将此问题作为题外话结束,因为家庭作业问题必须显示您迄今为止尝试过的内容,并具体说明您遇到的问题。正如所写,这只是“给我代码”。
-
好吧,对不起,我是软件开发的新手(因此是这个问题)和 StackOverflow 的新手 - 不需要对我的问题做出反应。我认为很明显我的问题是关于如何模拟对象列表的。现在请看我上面的代码。
标签: c# unit-testing mocking moq stubbing