我有一个超级简单的模板页面,页面上有元描述。我想编写一个测试来验证是否存在单个元描述并且内容不是空的。
这是我的测试目前的样子:
[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选择器无效,有人想知道如何让测试工作吗?
答案 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();
}
测试通过:
修改名称值:
<meta name=""BANANA"" content=""@Model.MetaDescription"" />
并进行相同的测试:
所以问题只是你正在使用的选择器。