首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试SqlParameter是否相等

如何测试SqlParameter是否相等
EN

Stack Overflow用户
提问于 2009-11-02 15:49:12
回答 1查看 1K关注 0票数 3

使用NUnit和NMock2,我无法比较我认为相同的SqlParameters:

代码语言:javascript
复制
SqlParameter param1 = new SqlParameter("@Id", 1);
SqlParameter param2 = new SqlParameter("@Id", 1);
Assert.IsTrue(param1.Equals(param2));  // This failed

当我尝试使用NMock2测试方法的执行时,我偶然发现了这个问题。

代码语言:javascript
复制
[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?

  • How时,如何使用NMock2进行测试?您比较两个SqlParameters?

的等式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-02 16:35:17

因为据我所知,.Equals()使用的是等于的默认实现(这意味着,如果SqlParameter是同一个对象,SqlParameter只能“等于”另一个SqlParameter),因此需要直接询问参数的属性,以确保传递正确的数据。

Has.Property调用在.With中允许您检查参数的属性,而不要求参数等于其他值。尝试以下几点:

代码语言:javascript
复制
Expect.Once.On(mockSqlDao).Method("ExecuteNonQuery")
          .With("usp_Update_Comment", Has.Property("ParameterName").EqualTo("@Id") & 
                                      Has.Property("Value").EqualTo(1));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1662083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档