Вместо проверки, что изменилось количество сообщений в базе, можно использовать проверку того, что контроллер делает в том или ином случае. 

```ruby
message = stub save: true
Message.should_receive(:new).with(@valid_message).and_return(message)


message = stub save: false
Message.should_receive(:new).with(@valid_message).and_return(message)
```

Таким образом тест получается более быстрым и мы проверяем только поведение контроллера.
Например, если добавится еще одна валидация в модель, то не нужно будет менять `@valid_message`, потому что он, по сути,
и не используется.

Код теста получается не таким читабельным, конечно. Это должно навести на мысль, что код контроллера можно улучшить.
Например, написать примерно так:

```ruby

def create
  if resource.save
    # success
  else
    # failure
  end
end

def resource
  current_user.messages.build params[:message]
end
```