The problem is that it's hard to achieve the same result as Shoulda/Remarkable matchers using only RSpec:
it {
user = User.new
user.should be_invalid
user.errors[:email].should include("can't be blank")
}
It would be nice however, if we provide something like this:
it { User.new.should be_invalid.with(:email => "can't be blank") }
That, as we know, in this simple case, can be just:
it { should be_invalid.with(:email => "can't be blank") }
For the other examples, it requires that you actually input some values:
it { User.new(:email => "a@a").should be_invalid.with(:email => "a@a") }
In the example above, we repeat :email twice, so there is room for improvement.