2011-04-09 55 views
0

编辑:想通了。我应该做("span.age", :content => ...)RoR使用have_selector的Rspec标签

当我运行这个测试的RSpec

response.should have_selector("span.age", :age => work1.age.to_s): 

Failure/Error: response.should have_selector("span.age", :age => work1.age.to_s) 
     expected following output to contain a 

    <span.age age='15'/> tag 

输出

.... 

    <td class="work"> 
     <span class="age">15</span><br><span class="content">B.1</span> 
    </td> 

运行在span.content标签相同的测试与

我收到以下错误
response.should have_selector("span.content", :content => work1.content) 

不会产生错误。不过,如果我故意犯错在标签,我得到的输出相同,但不同的期望:

 <span.content>B.1</span.content> 

含量与年龄之间唯一不同的是,年龄是一个整数,内容是一个字符串。我不确定为什么会发生这种情况。谢谢您的帮助。

哦,此外,这不会发生在开发设置,只在测试。

回答

2

我相信,答案在于您为第二次尝试选择了符号“:content”。要更正原始测试,请将其更改为 response.should have_selector(“span.age”,:content => work1.age.to_s)

这是因为键“:content”指的是“span”元素,所以你说:“响应应该有一个”span.age“选择器,其内容等于评估表达式”work1.age.to_s“的结果。你原来的测试是寻找一个”span.age “元素的属性”年龄“等于