method
assert_no_difference
rails latest stable - Class:
ActiveSupport::Testing::Assertions
assert_no_difference(expression, message = nil, &block)public
Assertion that the numeric result of evaluating an expression is not changed before and after invoking the passed in block.
assert_no_difference 'Article.count' do post :create, params: { article: invalid_attributes } end
A lambda can be passed in and evaluated.
assert_no_difference -> { Article.count } do post :create, params: { article: invalid_attributes } end
An error message can be specified.
assert_no_difference 'Article.count', 'An Article should not be created' do post :create, params: { article: invalid_attributes } end
An array of expressions can also be passed in and evaluated.
assert_no_difference [ 'Article.count', -> { Post.count } ] do post :create, params: { article: invalid_attributes } end
1Note
Takes array
Like assert_difference this method can take an array of expressions to evaluate all of them. For example:
assert_no_difference ['Publisher.count', 'User.count', 'Membership.count'] do post :create end
It creates an assertion for each item in the array. So this will add three assertions to your test.