Как правильно разместить запись в тестировании Rails - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу проверить, не удалось ли создать новое Post в моем приложении на форуме Rails.

A Post не следует создавать при наличии пустого заголовка.

Я пытаюсь это сделать, но это дает мне неверный URI Ошибка:

Error:
PostsNewTest#test_make_a_new_post_with_invalid_title:
URI::InvalidURIError: bad URI(is not URI?): http://www.example.com:80{:params=>{:post=>{:title=>"", :body=>"body", :user_id=>762146111, :category=>"general/announcements"}}}
    test/integration/posts_new_test.rb:31:in `block (2 levels) in <class:PostsNewTest>'
    test/integration/posts_new_test.rb:30:in `block in <class:PostsNewTest>'

Вот что я пытаюсь, я много играл, чтобы заставить его работать, но я просто не знаю, как это сделать правильно.Я был бы рад, если бы кто-то мог помочь мне понять это правильно:

  test 'make a new post with invalid title' do
    log_in_as(@user_archer)
    get new_post_path category: @valid_category
    assert_no_difference 'Post.count' do
      post  params: { post: {title:    @invalid_title,
                            body:     @valid_body,
                            user_id:  @valid_user_id ,
                            category: @valid_category}}
    end
  end

Я не понимаю маршрут, куда отправлять сообщения, потому что это не названный маршрут как post_a_Post_path

Редактировать:Дополнительный вопрос относится ли это к Интеграционному тесту или это должно быть частью Модельного теста для Post?

1 Ответ

0 голосов
/ 11 сентября 2018

При условии, что вы настроили маршруты в соответствии с Соглашениями Rails resources :posts), вы должны создать сообщение, отправив запрос POST на /posts

Вы можете проверить фактический маршрут, набрав $ rails routes.

test 'make a new post with invalid title' do
  log_in_as(@user_archer)
  # this is not needed in an integration test
  # - get new_post_path category: @valid_category
  assert_no_difference 'Post.count' do
    post posts_path, params: { post: {
      title:    @invalid_title,
      body:     @valid_body,
      user_id:  @valid_user_id ,
      category: @valid_category}}
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...