2013-10-07 3 views
11
class Foo 
    def bar(a, b) 
    ... 

Foo.should_receive(:bar) 

ожидает, что бар будет вызываться с любыми аргументами.Как ожидать некоторые (но не все) аргументы с RSpec should_receive?

Foo.should_receive(:bar).with(:baz, :qux) 

ожидает: baz и: qux передаются как параметры.

Как ожидать, что первый параметр равен: baz, и не заботятся о других параметрах?

ответ

23

Используйте anything Искателя:

Foo.should_receive(:bar).with(:baz, anything) 
+2

Это работает. Предостережение - вам нужно «все» для каждого параметра. –

+2

Я не уверен, был ли он добавлен впоследствии, но RSpec имеет any_args, так что для 'bar (a, b, c)' вы можете сделать 'Foo.should_receive (: bar) .with (: baz, any_args)' – rubyprince

+0

Спасибо @rubyprince очень, отличный совет! –

0

Для RSpec 1.3anything не работает, если ваш метод получения хэш в качестве аргумента, поэтому, пожалуйста, попробуйте с hash_including(:key => val):

Connectors::Scim::Preprocessors::Builder. 
    should_receive(:build). 
    with(
     hash_including(:connector => connector) 
    ). 
    and_return(preprocessor) 
} 
Смежные вопросы