2015-03-19 56 views
4

我对测试非常新,所以如果在我的方法中遇到错误,请随时纠正我。Minitest的assert_select的水豚等价物是什么?

我正在使用Minitest测试Rails4应用程序。正如我在许多页面中包含JS一样,我正在使用Capybara在我的测试中使用JS驱动程序,并且还能够触发JS事件并测试预期结果。这里我的困惑开始了,因为有很多方法可以包括水豚。

此外,我发现“正常”的断言式语法不适用于水豚。在这里,我的困惑达到顶峰。在我的研究过程中,我发现水豚有一种Spec-style DSL以及其他几种。 现在我用的宝石“MINITEST护栏,水豚”(Github),我试图在这个名单与方法/ DSL的工作:RubyDoc

我试图取代一个简单的说法,对于一个HTML元素的测试。

前:assert_select "title", "Study | Word Up"

现在:page.has_selector?('title', :text => "Study | Word Up")

但无论怎样我测试,测试始终通过。这怎么可能?我检查了服务器日志,看看我是否在正确的页面上。但一切都很好,通过测试没有意义。

回答

4

你需要使用水豚的assert_selector

assert_selector "title", text: "Study | Word Up" 

如果你正试图从头部元素,而不是身体断言文档的标题,那么你需要使用assert_title

assert_title "Study | Word Up" 
+0

谢谢,assert_title就是我一直在寻找的东西。 – Flip 2015-03-19 14:02:45

2

您需要使用assert

assert page.has_selector?('title', :text => "Study | Word Up") 

has_selector?返回一个布尔值,你需要检查这个布尔值。

+0

好要知道,但遗憾的是现在测试失败也应该通过:'Minitest :: Assertion:断言失败,没有给出任何消息。' – Flip 2015-03-19 11:00:10

+0

我发现has_selector?方法仅适用于用户可见的元素。所以这可能是我的方法无效的原因。 – Flip 2015-03-19 13:36:57