Minitest и Fixtures: Передача в правильных параметрах? - PullRequest
0 голосов
/ 11 января 2019

Итак, я пытаюсь создать простой интеграционный тест в Rails. Я хочу проверить мою форму входа. Я просто не могу понять, как правильно передать мои параметры. Мой файл .yml называется агентами .yml. Мой файл фикстуры:

one: 
  first_name: firstNameTest
  last_name: lastNameTest
  email: test@test.com
  encrypted_password: <%= Devise::Encryptor.digest(Agent, '123456') %>

это должно быть хорошо.

Два теста, которые я пробовал, оба дают мне ошибку. Первый, следующий за Ruby.docs:

    class FlowsTest < ActionDispatch::IntegrationTest

    test "Login and navigate" do 
        get "/agents/sign_in"
        post "/agents/sign_in", email: agents(:one).email, password: 
        agents(:one).password
        follow_redirect!
      end 

    end

вторая версия:

class FlowsTest < ActionDispatch::IntegrationTest
    test "Login and navigate" do 
    get "/agents/sign_in"
    post "/agents/sign_in", agent: {email: agents(:one).email, password: '123456'}
    follow_redirect!
  end 

end

Оба выдают мне ошибку:

Error:
FlowsTest#test_Login_and_navigate:
ArgumentError: unknown keywords: email, password
    test/integration/Flows_test.rb:6:in `block in <class:FlowsTest>'

Полагаю, я неправильно передаю параметры. Потому что электронную почту и пароль надо брать из светильников, или я ошибаюсь? Кто-нибудь может помочь? Буду очень признателен. Спасибо всем заранее!

1 Ответ

0 голосов
/ 11 января 2019

Решено:

require 'test_helper'

class FlowsTest < ActionDispatch::IntegrationTest
  fixtures :agents


      def test_login
        get "/agents/sign_in"
        assert_equal 200, status  
        post "/agents/sign_in", params: { email: agents(:one).email,
          password: agents(:one).password }
        follow_redirect!
        assert_equal 200, status
        assert_equal "/", path
      end 
    end
...