[rspec-users] should contain vs. =~

David Chelimsky dchelimsky at gmail.com
Mon Sep 6 11:15:52 EDT 2010


On Sep 6, 2010, at 9:51 AM, Brennon Bortz wrote:

> On 6 Sep 2010, at 15:39, David Chelimsky wrote:
> 
>> On Sep 6, 2010, at 9:20 AM, Brennon Bortz wrote:
>> 
>>> On 6 Sep 2010, at 14:55, David Chelimsky wrote:
>>> 
>>>> On Sep 6, 2010, at 8:15 AM, Brennon Bortz wrote:
>>>> 
>>>>> I'm developing another view test.  Relevant example:
>>>>> 
>>>>> it "should show the item's url" do
>>>>>       rendered.should contain("http://www.example.com")
>>>>> end
>>>>> 
>>>>> I'm calling render in a before block.  I have other similar examples on the page in which I'm simply using:
>>>>> 
>>>>> rendered.should =~ "..."
>>>>> 
>>>>> These all work fine, as does the first example I posted here.  However, when trying to express that first example with a regex (which I prefer), the example fails:
>>>>> 
>>>>> it "should show the item's url" do
>>>>>       rendered.should =~ /http:\/\/www.example.com/
>>>>> end
>>>>> 
>>>>> Am I missing something?
>>> 
>>> 
>>> Failures:
>>>   1) widgets/show.html.erb widget details should show the widget's url
>>>      Failure/Error: rendered.should =~ /http:\/\/www.example.com/
>>>      expected: /http:\/\/www.example.com/,
>>>           got: "http://www.example.com" (using =~)
>>> 
>>> I realise this is because of the escaped HTML output, but I'm not quite sure what to do about it...
>> 
>> I think contain is your best bet here, unless you actually want to change the expectation so it includes the escaped characters.
> 
> I've got no problem doing that.  On a related note, though, is there any possibility that Capybara matchers will ever be available in view/helper examples?  should_contain is a little bit open-ended for my taste.

I'd like that very much, but, as things stand today, they're bound to the Capybara session, so they won't work in view specs (which don't have a full request cycle). I've chatted w/ Jonas about this and he's interested in decoupling the matchers so we could use them against an arbitrary string, but there's no definite commitment to that or an ETA.

Wish I had better news than that, but that's the state of things.

Cheers,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100906/906b60c7/attachment.html>


More information about the rspec-users mailing list