Мое приложение позволяет учителям начинать учетные записи для своих учеников. Чтобы избежать бремени просить учителей думать о паролях для своих учеников, я написал метод автоматического создания паролей. Эта функция работает правильно в разработке и производстве. Я пытаюсь написать тест, чтобы эта функция продолжала работать, но результаты не то, что я ожидаю.Rails test для автоматического генерирования пароля
Подозреваю, что моя ошибка в тесте:
students_controller_test.rb
test "Auto Password" do
post students_path, params: { student: { first_name: "Ren",
last_name: "Stimpy",
studentNum: 13},
aula: { seminar_id: @seminar.id } }
student = assigns(:student)
assert_equal "rs13", student.username
assert_equal Student.digest('rs13'), student.password_digest
end
И результаты:
FAIL["test_Auto_Password", StudentsControllerTest, 2.0619301088154316]
test_Auto_Password#StudentsControllerTest (2.06s)
--- expected
+++ actual
@@ -1,2 +1 @@
-# encoding: ASCII-8BIT
-"$2a$04$1FfqltU9B7yawIs7Z4GWLe9eaaVhFxdPvF9Vg2UWUbYxwqQ5j/9Dm"
+"$2a$04$CuN1BLKhI/Fx9ueB4QAskOl9Ik.og26TJeeDDF5tdur1erILzjj7W"
test/controllers/students_controller_test.rb:91:in `block in <class:StudentsControllerTest>'
Я, вероятно, что-то недоразумение о том, как пароль пищеварительные работы. Пароль студента должен быть «rs13». Поэтому я ожидал, что Student.digest ('rs13') должен быть равен student.password_digest. По-видимому, это не так.
К слову, пароль «rs13» исходит из метода в моем student_controller, который автоматически создает имя пользователя, объединяя инициалы и номер студента. Пароль также равен этому.
Заранее благодарю за понимание!
Благодарим вас за источник. Определенно, что я искал, но я не мог понять точный синтаксис. "Assert 'rs13' == student.password_dig est" возвращает false. «Assert_equal 'rs13' == student.password_dig est" дает ошибку. «Assert» rs13 '== student.password »действительно работает, но поскольку он проверяет пароль вместо password_digest, я был обеспокоен тем, что это не был верный тест. Я понял, что могу проверить, что я сделал, используя student.authenticate. Это, вероятно, не произошло бы со мной, не задумываясь о вашем ответе. Так что спасибо! - Джефф Зивкович –