Собственные проверки должны быть протестированы в направляющих?

Было несколько комментариев, указывающих, что C не является C++. В то время как это правда, также верный, что любой компилятор C++ также скомпилирует C - обычно, режим компилятора будет автоматически выбран на основе расширения файла, но каждый компилятор также имеет опцию вызвать C или режим C++ независимо от имени файла.

Так выбирают бесплатный компилятор C++, что Вы являетесь самыми довольными gcc, VC ++ Экспресс, Цифровой Марс, безотносительно. Используйте IDE, Вам нравятся лучший emacs, энергия, VC ++ Экспресс, Код:: Блоки, Кровопролитие - снова безотносительно.

Любой из этих инструментов будет более, чем достаточен для изучения. Лично, так как Вы спрашиваете о Windows, я выбрал бы VC ++ Экспресс - это - большой IDE, это свободно, и это скомпилирует программы C очень хорошо.

11
задан Rômulo Ceccon 10 December 2009 в 12:01
поделиться

5 ответов

Да.

Проверка наличия или отсутствия атрибута модели - это только проверка кода validates_presence_of как побочного продукта реального теста, заключающегося в том, что в вашей модели существует validates_presence_of.

Если кто-то закомментировал кучу проверочного кода, а затем забыл его раскомментировать, то это останется незамеченным и может вызвать всевозможные проблемы.

Я тестирую их не потому, что считаю, что они не работают, а чтобы убедиться, что они присутствуют в моей модели, когда это необходимо.

20
ответ дан 3 December 2019 в 02:40
поделиться

У Мэтью Басса есть отличная жемчужина, которую он выпустил именно для такого рода вещей. Он добавляет средства сопоставления rspec, которые проверяют наличие валидации без фактического запуска базового кода ActiveRecord. Подробнее об этом здесь .

Добавлены сопоставители для проверок:

it_should_validate_presence_of     :first_name, :last_name, :email
it_should_validate_numericality_of :zip
it_should_validate_uniqueness_of   :email
it_should_validate_inclusion_of    :gender, :in => %w(Male Female)

Также сопоставители для ассоциаций:

it_should_belong_to :employer
it_should_have_many :friends, :romans, :countrymen
it_should_have_one  :account
it_should_have_and_belong_to_many :comments

И еще несколько полезных дополнений:

# tests that User.count increases by 1
it_should_be_createable :with => {:first_name => 'Ed', :last_name => 'The Duck', :email => 'a@b.com'}

# tests that the attribute is protected
it_should_protect :email

Это ни в коем случае не исчерпывающий список . У меня есть вилка, в которую я добавил несколько других, которые мне были нужны, вероятно, есть и другие, плавающие вокруг. Это хороший подход, и для меня он подходит как золотая середина между гарантией того, что валидации все еще присутствуют в модели, и необходимостью явно писать тесты для выполнения кода ActiveRecord, чтобы гарантировать это.

it_should_belong_to :employer
it_should_have_many :friends, :romans, :countrymen
it_should_have_one  :account
it_should_have_and_belong_to_many :comments

И несколько других полезных дополнений:

# tests that User.count increases by 1
it_should_be_createable :with => {:first_name => 'Ed', :last_name => 'The Duck', :email => 'a@b.com'}

# tests that the attribute is protected
it_should_protect :email

Это ни в коем случае не исчерпывающий список. У меня есть вилка, в которую я добавил несколько других, которые мне были нужны, вероятно, есть и другие, плавающие вокруг. Это хороший подход, и для меня он подходит как золотая середина между гарантией того, что валидации все еще присутствуют в модели, и необходимостью явно писать тесты для выполнения кода ActiveRecord, чтобы гарантировать это.

it_should_belong_to :employer
it_should_have_many :friends, :romans, :countrymen
it_should_have_one  :account
it_should_have_and_belong_to_many :comments

И еще несколько полезных дополнений:

# tests that User.count increases by 1
it_should_be_createable :with => {:first_name => 'Ed', :last_name => 'The Duck', :email => 'a@b.com'}

# tests that the attribute is protected
it_should_protect :email

Это ни в коем случае не исчерпывающий список. У меня есть вилка, в которую я добавил несколько других, которые мне были нужны, вероятно, есть и другие, плавающие вокруг. Это хороший подход, и для меня он подходит как золотая середина между гарантией того, что валидации все еще присутствуют в модели, и необходимостью явно писать тесты для выполнения кода ActiveRecord, чтобы гарантировать это.

4
ответ дан 3 December 2019 в 02:40
поделиться

This is where tools like Shoulda really come in handy. I think its totally up to you to test how you write the code with the tools people provide you. Just because you are using has_many, does not mean you are using it right!

Seriously, if you integrate Shoulda into the mix, it becomes trivial to test these sorts of things. if you run rcov, its going to tell you all the code you wrote is not fully tested, unless you do.

3
ответ дан 3 December 2019 в 02:40
поделиться

Проверьте код, который вы пишете . ActiveRecord имеет отличное покрытие для тестирования, включая покрытие для методов класса проверки.

Спецификация:

require 'spec_helper'

describe User do
  before(:each) do
    @user = User.new
  end

  it "should not be valid without an email" do
    @user.save.should be_false
    @user.should_not be_valid
    @user.email = "example@example.com"
    @user.should be_valid
    @user.save.should be_true
  end

end

Чтобы пройти эту спецификацию, вам потребуется

class User < ActiveRecord::Base
  validates_presence_of :email
end
1
ответ дан 3 December 2019 в 02:40
поделиться

Планируете ли вы писать модульные тесты для каждого отдельного оператора Ruby и метода API?

Модульные тесты должны тестировать ваш собственный код, а не чужой - это их работа, зачем дублировать их работу? И если вы не доверяете им хорошо выполнять свою работу, почему вы используете их код?

3
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: