[rspec-users] unless filter

David Chelimsky dchelimsky at gmail.com
Tue Mar 15 07:24:38 EDT 2011


On Mar 15, 2011, at 4:49 AM, Shamaoke wrote:

> On 14 мар, 03:16, Myron Marston <myron.mars... at gmail.com> wrote:
>> On Mar 11, 1:17 pm, Justin Ko <jko... at gmail.com> wrote:
>> 
>> 
>> 
>>> On Thu, Mar 10, 2011 at 2:32 AM, Shamaoke <shama... at hotmail.com> wrote:
>>>> Hi.
>> 
>>>> Why doesn't the following filter work?
>> 
>>>> ~~~
>>>> # encoding: utf-8
>>>> # ./example_spec.rb
>> 
>>>> RSpec.configure do |config|
>>>>  config.filter = {
>>>>    unless: :condition_acceptable
>>>>  }
>>>> end
>> 
>>>> describe 'some code' do
>>>>  it 'does one', if: :condition_acceptable do
>>>>  end
>> 
>>>>  it 'does two', unless: :condition_acceptable do
>>>>  end
>>>> end
>>>> ~~~
>> 
>>>> ~~~
>>>> $ rspec example_spec.rb
>>>> No examples were matched # instead of 'some code does two'
>>>> ~~~
>> 
>>>> Thanks.
>> 
>>>> Debian GNU/Linux 5.0.7;
>>>> Ruby 1.9.2;
>>>> RSpec 2.5.0.
>>>> _______________________________________________
>>>> rspec-users mailing list
>>>> rspec-us... at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>> 
>>> If :condition_acceptable evaluates to false, your example will run. If you
>>> are looking to "match" key/values, don't use :if or :unless
>> 
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
>> 
>> There are built-in `:if` and `:unless` filters.  You probably don't
>> want to override them.  They work how you would normally expect.
>> 
>> http://relishapp.com/rspec/rspec-core/v/2-5/dir/filtering/implicit-fi...
>> 
>> HTH,
>> Myron

> Thanks for the clarification. I was led astray by the example from the
> RSpec Book where the network dependent code was described*. In that
> example the default if filter was overriden using the Proc object and
> it returned true or false depending on the network condition. Now I
> understand that code could be changed like the following:
> 
> ~~~
> class Network
>  def self.available
>    true # or false depending on the network condition
>  end
> end
> 
> describe 'some network dependent code' do
>  it 'does one', :if => Network.available do # works if the network is
> available only
>  end
> 
>  it 'does two' do
>  end
> end
> ~~~
> ________
> * The RSpec Book, chp. 16, p. 238.

Unfortunately, :if and :unless were added as special cases after rspec-2.0 and The RSpec Book were released :(

Cheers,
David





More information about the rspec-users mailing list