method

assert_no_changes

Importance_2
v8.1.1 - Show latest stable - 0 notes - 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
Show source
Register or log in to add new notes.