Как избежать этой ошибки и правильно протестировать приложение Rails 3? - PullRequest
0 голосов
/ 20 декабря 2018

Я разрабатываю некоторые тестовые примеры для очень старого унаследованного приложения, работающего на Rails 3.

Я создал простой тест здесь:

test/functional/transactions_controller.rb

require 'test_helper'

class TransactionsControllerTest < ActionController::TestCase
   test "the truth" do
     assert true
   end
  # test "product recycled is removed from the iventory" do
  #   assert true
  # end
end

Я уже запускаю:

bundle exec rake db:create RAILS_ENV=test                                                                                                                                 
bundle exec rake db:schema:load RAILS_ENV=test

Когда я пытаюсь сделать свой тест с помощью этой команды:

 ruby -Itest test/functional/transactions_controller_test.rb 

Я получаю эту ошибку:

TransactionsControllerTest
ERROR (0:00:00.089) the truth
  Mysql2::Error: Unknown column 'shiped_at' in 'field list': INSERT INTO `bill_of_ladings` (`shiped_at`, `created_at`, `updated_at`, `id`) VALUES ('2012-02-27 09:51:12', '2018-12-20 13:15:21', '2018-12-20 13:15:21', 980190962)

Если я просто прокомментирую в своем тесте «проверить правду»линия.Это работает (я боялся, что это что-то связано с моей средой).

This is my test/fixtures/bill_of_lading.yml


one:
  customer: 
  shiped_at: 2012-02-27 09:51:12

two:
  customer: 
  shiped_at: 2012-02-27 09:51:12

Хорошо.Мой тест ничего не делает, только «подтвердить истину».Почему тестовый пример пытается вставить что-то в базу данных?Я что-то здесь упускаю?

Спасибо

1 Ответ

0 голосов
/ 20 декабря 2018

Перед запуском тестов Rails загружает приборы из test/fixtures/*.yml (см. в официальном руководстве ), из ошибки видно, что ваши приборы не синхронизированы с вашей схемой БД и по-прежнему имеют shiped_at column.

Вы можете обновить приборы, чтобы иметь правильные данные или удалить их, если вы их не используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...