使用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次
问题:
当您期望参数是SqlParameter?
的等式吗?
发布于 2009-11-02 16:35:17
因为据我所知,.Equals()使用的是等于的默认实现(这意味着,如果SqlParameter是同一个对象,SqlParameter只能“等于”另一个SqlParameter),因此需要直接询问参数的属性,以确保传递正确的数据。
Has.Property调用在.With中允许您检查参数的属性,而不要求参数等于其他值。尝试以下几点:
Expect.Once.On(mockSqlDao).Method("ExecuteNonQuery")
.With("usp_Update_Comment", Has.Property("ParameterName").EqualTo("@Id") &
Has.Property("Value").EqualTo(1));https://stackoverflow.com/questions/1662083
复制相似问题