Используя 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 раз]
Вопросы:
- Как вы тестируете с NMock2, когда вы
Ожидаемый параметр - SqlParameter?
- Как вы сравниваете равенство двух SqlParameters?