def devaluate(actual, *expectings)
      prepare(actual, *expectings) do |variable, expected_value, actual_value|
        if actual_value.nil? || (expected_value && expected_value != actual_value)
          if expected_value && actual_value
            pass new_message.assigns(variable).with(expected_value)
          else
            pass new_message.assigns(variable)
          end
        else
          message = expected_message(variable).to_not_be
          fail(expected_value.nil? ? message.assigned_a_value : message.assigned_with(expected_value))
        end
      end
    end
def devaluate(actual, *expectings)
      prepare(actual, *expectings) do |variable, expected_value, actual_value|
        if actual_value.nil? || (expected_value && expected_value != actual_value)
          if expected_value && actual_value
            pass new_message.assigns(variable).with(expected_value)
          else
            pass new_message.assigns(variable)
          end
        else
          message = expected_message(variable).to_not_be
          fail(expected_value.nil? ? message.assigned_a_value : message.assigned_with(expected_value))
        end
      end
    end
(see Riot::AssertionMacro#devaluate)
 @param [Symbol, String] variable name of instance variable to look for
 @param [Object, nil] expected_value an optional value to validate for the variable