Поиск:

Ответ в темуСоздание новой темы Создание опроса
> assert_equal 
V
    Опции темы
Лена
Дата 27.10.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Изучаю тестирование в rails...
В книге сказано, что этот метод имеет три параметра:
assert_equal(expected, actual, message) и тут же в книге приводиться пример где параметров всего два а не три:
assert_equal "Это название уже использовалось", product.errors.on(:title)
поэтому я не могу разобраться как работает этот метод с двумя параметрами. Что происходит в строке:
assert_equal "Это название уже использовалось", product.errors.on(:title)


Я так понимаю чтобы этот метод вернул true, надо чтобы строка product.errors.on(:title) вернула строку:
"Это название уже использовалось", тогда первый и второй параметр будут равны. Как такое можно смоделировать?

Вот класс:
class Product < ActiveRecord::Base
validates_uniqueness_of :title
end

И в случае ошибки, будет получено предупреждение на английском языке из product.errors.on(:title) и поэтому сравнивать английское сообщение с "Это название уже использовалось" не имеет смысла?

В файле теста имею:
Код

class ProductTest < Test::Unit::TestCase
  
  fixtures :products

def test_unique_title
       product = Product.new(:title       => products(:ruby_book).title,
                             :description => "yyy", 
                             :price       => 1, 
                             :image_url   => "fred.gif")
   
       assert !product.save
       assert_equal "Это название уже использовалось", product.errors.on(:title)
     end


фикстура:
#START:ruby
ruby_book:
  id:          1
  title:       Programming Ruby
  description: Dummy description
  price:       1234
  image_url:   ruby.png
#END:ruby

rails_book:
  id:          2
  title:       Agile Web Development with Rails
  description: Dummy description
  price:       2345
  image_url:   rails.png

После применения теста вижу:

 Failure:
test_unique_title(ProductTest) [D:/3rdRail/workspace/depot/test/unit/product_test.rb:31]:
<"Это название СѓР¶Рµ использовалось"> expected but was
<"has already been taken">.

Что за аброкадабра и почему я вижу сообщение на английском языке <"has already been taken">?



PM MAIL   Вверх
source777
Дата 27.10.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  27.10.2009,  17:47 Найти цитируемый пост)
тут же в книге приводиться пример где параметров всего два а не три

Посмотри внимательно сигнатуру метода:
Код

assert_equal(expected, actual, message=nil)   


Параметры бывают обязательные и необязательные(у которых есть значение по умолчанию). В данном случае message имеет по умолчанию значение nil, след. метод можно вызвать и с 2, и с 3 параметрами, по желанию.


Цитата(Лена @  27.10.2009,  17:47 Найти цитируемый пост)
в случае ошибки, будет получено предупреждение на английском языке из product.errors.on(:title)

Правильно, нужно поставить gem russian, чтобы сообщения об ошибках валидации были на русском.


Цитата(Лена @  27.10.2009,  17:47 Найти цитируемый пост)
Что за аброкадабра ?
Это у тебя спросить надо! Почему у тебя кодировка консоли не UTF-8? Или ты плохая девочка и используешь Windows для веб-разработки? smile 
Если так, то поставь хотя бы Cygwin, чтобы сократить кол-во проблем, связанных с этой ОС, а лучше VirtualBox и Ubuntu, если комп позволяет гонять полноценную виртуальную машину.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 28.10.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Спасибо, понятно.

Цитата(source777 @  27.10.2009,  23:29 Найти цитируемый пост)
используешь Windows для веб-разработки


Я использую этот продукт http://www.embarcadero.com/products/3rdrail он очень удобен и посколку я работаю с другими продуктами компании Embarcadero
менять я его не хочу.  smile 




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1046 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.