method
assert_no_changes
v8.1.1 -
Show latest stable
- Class:
ActiveSupport::Testing::Assertions
assert_no_changes(expression, message = nil, from: UNTRACKED, &block)public
Assertion that the result of evaluating an expression is not changed before and after invoking the passed in block.
assert_no_changes 'Status.all_good?' do post :create, params: { status: { ok: true } } end
Provide the optional keyword argument :from to specify the expected initial value. The comparison is done using case equality (===), which means you can specify patterns or classes:
# Exact value match assert_no_changes -> { Status.all_good? }, from: true do post :create, params: { status: { ok: true } } end # Case equality assert_no_changes -> { user.token }, from: /\w{32}/ do user.touch end # Type check assert_no_changes -> { current_error }, from: RuntimeError do retry_operation end
An error message can be specified.
assert_no_changes -> { Status.all_good? }, 'Expected the status to be good' do post :create, params: { status: { ok: false } } end