c# - 使用 Moq 和 NUnit ,什么是编写方法/更好的语法?

标签 c# unit-testing nunit installation moq

我正在尝试测试这种行为

-- BLOGTableAdapter.GetBlogsByTitle(字符串 title) 只被调用一次

-- 并使用具有的字符串调用 长度大于1,

-- 返回 BLOGDataTable 对象

 [Test]
    public void GetBlogsByBlogTitleTest4()
    {
        var mockAdapter = new Mock<BLOGTableAdapter>();
        var mockTable = new Mock<BLOGDataTable>();

        mockAdapter.Setup(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0))).Returns(mockTable.Object);

        var blogBl = new BlogManagerBLL(mockAdapter.Object);
        blogBl.GetBlogsByBlogTitle("Thanks for reading my question");

        mockAdapter.VerifyAll();
        mockAdapter.Verify(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0)), Times.Exactly(1));
    }

当调用 GetBlogsByTitle(string title) 时,在类中说数据访问层中的“BlogManagerBLL”

public BLOGDataTable GetBlogsByBlogTitle(string title)
        {
            return Adapter.GetBlogsByTitle(title);
        }

如您所见,我使用两个单独的语句来完成这些检查

mockAdapter.Setup(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0))).Returns(mockTable.Object);    
mockAdapter.Verify(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0)), Times.Exactly(1));
  1. 我怎样才能把它合二为一 声明 ?
  2. 我测试的东西是否正确?

谢谢

最佳答案

如果你要测试两件事,你应该写两个测试。

[Test]
public void BlogTableAdapter_should_be_called_with_string_having_length_greater_than_1()
{
    var mockAdapter = new Mock<BLOGTableAdapter>();

    var blogBl = new BlogManagerBLL(mockAdapter.Object);
    blogBl.GetBlogsByBlogTitle("Thanks for reading my question");

    mockAdapter.Verify(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0)));
}

[Test]
public void BlogTableAdapter_should_return_a_BLOGDataTable_object()
{
    var mockAdapter = new Mock<BLOGTableAdapter>();
    mockAdapter.Setup(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0))).Returns(new BLOGDataTable());

    var blogBl = new BlogManagerBLL(mockAdapter.Object);
    var returnValue = blogBl.GetBlogsByBlogTitle("Thanks for reading my question");

    Assert.That(returnValue, Is.TypeOf(typeof(BLOGDataTable)));
}

所以我想我的建议是不要将它们放在一起,为每个创建一个测试。我会说您正在测试正确的东西。

关于c# - 使用 Moq 和 NUnit ,什么是编写方法/更好的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068066/

相关文章:

c# - 如何使用 csproj 多目标 .NET Core 类库?

c# - 为什么我的证书集合中存在 .Pfx 而不是我的 .Cer?

c# - Asp.net Core 中 IFormFile 字段的 xunit 测试

.net - 关于私有(private)方法单元测试的问题

c++ - Microsoft::VisualStudio::CppUnitTestFramework 中的参数化测试方法

c# - 自由格式动态 web.config 区域

c# - : ASP.net 或 WCF 哪个更简单?

.net - .net单元测试-如何测试插入/更新/删除方法

javascript - 测试检查数组是否原地反转

c# - NUnit 的 ExpectedExceptionAttribute 是测试是否引发异常的唯一方法吗?