使用 NUnit 和 NMock2 我无法比较我认为相同的 SqlParameters:
SqlParameter param1 = new SqlParameter("@Id", 1);
SqlParameter param2 = new SqlParameter("@Id", 1);
Assert.IsTrue(param1.Equals(param2)); // This failed
在尝试使用 NMock2 测试方法的执行时,我偶然发现了这个问题
[Test]
public void UpdateComments()
{
const int arbitraryId = 1;
Comment comment = new Comment();
SqlParameter idParam = new SqlParameter("@ChangeId", arbitraryId);
Expect.Once.On(mockSqlDao).Method("ExecuteNonQuery")
.With("usp_Update_Comment", idParam);
changeDao.UpdateComment(arbitraryId, comment);
mocks.VerifyAllExpectationsHaveBeenMet();
}
我收到了这个错误:
NMock2.Internal.ExpectationException:意外调用 sqlDao.ExecuteNonQuery("usp_Update_Comment", ) 预期:1 次:sqlDao.ExecuteNonQuery(等于 "usp_Update_Comment",等于 <@ChangeId>) [调用 0 次]
问题:
- 当您期望 Parameter 是 SqlParameter 时,如何使用 NMock2 进行测试?
- 你如何比较两个 SqlParameters 的相等性?