Testing 具有列表参数的Moq方法
嗨,我有以下测试Testing 具有列表参数的Moq方法,testing,tdd,moq,Testing,Tdd,Moq,嗨,我有以下测试 <TestInitialize()> Public Sub Initialise() dbHelper = New Mock(Of IDbHelper) dt = New DataTable() dt.Columns.AddRange(New DataColumn() {New DataColumn("AreaId"), New DataColumn(
<TestInitialize()>
Public Sub Initialise()
dbHelper = New Mock(Of IDbHelper)
dt = New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("AreaId"),
New DataColumn("Area"),
New DataColumn("CountryId"),
New DataColumn("Country"),
New DataColumn("SubRegionId"),
New DataColumn("SubRegion"),
New DataColumn("RegionId"),
New DataColumn("Region"),
New DataColumn("Notes"),
New DataColumn("Enabled"),
New DataColumn("FlagIgnoreFactsheet")
})
dt.Rows.Add(New String() {"0", "", "0", "", "0", "", "0", "", "", "True", "False"})
Dim paramList As New List(Of SqlParameter)
paramList.Add(New SqlParameter("@AreaId", It.IsAny(Of Int64)))
paramList.Add(New SqlParameter("@AreaName", String.Empty))
paramList.Add(New SqlParameter("@CountryId", 0))
paramList.Add(New SqlParameter("@Enabled", 1))
paramList.Add(New SqlParameter("@ShowAll", 0))
dbHelper.Setup(Function(db) db.ExecuteReader(It.IsAny(Of String), paramList)).Returns(dt)
End Sub
<TestMethod()>
Public Sub GetAreaWithParamTest()
Dim areaRepository As AreaRepository = New AreaRepository(dbHelper.Object)
Dim result = areaRepository.GetArea(1)
Assert.IsNotNull(result)
End Sub
请帮忙 使用dbHelper.SetupFunctiondb.ExecuteReaderIt.IsAnyOf字符串paramList.Returnsdt设置ExecuteReader方法时,它希望paramList将作为参数传递。但是实际上你传递了另一个物体,但是,具有相同的结构
最小起订量通过参考来比较清单。你也可以用表情来面对同样的问题。我已经回答了这个问题
我建议您使用It.IsAnyOf ListOf SqlParameter设置ExecuteReader方法,然后使用来验证参数列表
使用GitHub的示例中有:
mock.Setup(foo => foo.Execute(It.IsAny<int>(), It.IsAny<string>()))
.Returns(true)
.Callback<int, string>((i, s) =>
{
/* your asserts can be placed here */
});
非常感谢你。我是一个完全的Moq初学者,你能推荐一些能让我提高速度的教程/书吗?我想这是第一次。它涵盖了许多用例。
mock.Setup(foo => foo.Execute(It.IsAny<int>(), It.IsAny<string>()))
.Returns(true)
.Callback<int, string>((i, s) =>
{
/* your asserts can be placed here */
});