南希:我如何测试元描述标签是否存在

时间:2013-12-20 17:00:15

标签: c# unit-testing nancy

我有一个超级简单的模板页面,页面上有元描述。我想编写一个测试来验证是否存在单个元描述并且内容不是空的。

这是我的测试目前的样子:

[Test]
public void Get_Root_Should_Return_Page_With_Meta_Description()
{
    // Given
    var browser = new Browser(new Bootstrapper());

    // When
    var result = browser.Get("/");

    // Then
    result.Body["@description [content]"].ShouldExistOnce();
}

通过是否存在元描述。

页面如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>@Model.Title</title>
    <meta charset="utf-8" />
    <meta name="description" content="@Model.MetaDescription" />

我猜我的CSS选择器无效,有人想知道如何让测试工作吗?

1 个答案:

答案 0 :(得分:3)

它使用了CsQuery,因此你可以使用像jQuery这样的CSS选择器:

https://github.com/jamietre/CsQuery

根据您的示例,我创建了一条测试路线:

    Get["description"] = _ => @"<!DOCTYPE html>
<html>
<head>
    <title>@Model.Title</title>
    <meta charset=""utf-8"" />
    <meta name=""description"" content=""@Model.MetaDescription"" />
</head>
<body>
</body>
</html>";

然后添加了单元测试:

[Fact]
public void Get_Root_Should_Return_Page_With_Meta_Description()
{
    // Given
    var browser = new Browser(x => x.Module<TestModule>());

    // When
    var result = browser.Get("/description");

    // Then
    result.Body["meta[name=description]"].ShouldExistOnce();
}

测试通过:

enter image description here

修改名称值:

<meta name=""BANANA"" content=""@Model.MetaDescription"" />

并进行相同的测试:

enter image description here

所以问题只是你正在使用的选择器。