базовый вопрос тестирования рубина - PullRequest
0 голосов
/ 04 октября 2010

В последнее время я часто этим занимаюсь ... как я могу улучшить объявление о креплении скрепки? (извините, нуб вопрос, который я знаю)

class ProjectTest < ActiveSupport::TestCase
  def xxx
    project = Project.new({
      :name => 'xxx', 
      :attachment => File.new(Rails.root + 'test/fixtures/files/attachments/xxx.psd')
    })
    project.save
    project
  end





  test "should not save project without name" do
    assert xxx, "Saved project without a name"
  end

  test "should save a project with an attachment and have a valid directory" do
    assert File.directory?(xxx.directory), "Saved project without establishing a valid directory"
  end

  test "should save a project with an attachment and have a URL" do
    assert !xxx.filename.nil?, "Saved project without establishing a valid URL"
  end

  test "should save a project with an attachment and have a valid absolute file path" do
    assert File.exists?(xxx.absolute_filename), "Saved project without establishing a valid absolute filename"
  end

  test "should save a project with an attachment and have a valid base filename" do
    assert !xxx.base_filename.nil?, "Saved project without establishing a valid base filename"
  end
end

Ответы [ 3 ]

2 голосов
/ 14 января 2012

Признавая, что ответы на эти вопросы субъективны и сильно зависят от того, как выглядит остальная часть вашей системы, вот некоторые мысли, которые, я надеюсь, будут полезны:

1 - Если ваши приборы часто используют файловую систему,взгляните на самоцвет FakeFS: https://github.com/defunkt/fakefs

2 - Хотя в некоторых случаях создание осветителей в одном файле с самими тестами вполне разумно, я считаю, что случай их разделения более распространен.Это позволяет использовать повторно - как для других тестов, так и для построения связей с другими данными по мере развития системы.Очевидно, до вас, просто кое-что рассмотреть.

0 голосов
/ 06 сентября 2011

Также обратите внимание на такие решения, как FactoryGirl или Machinist - замены приспособлений, которые позволяют определять фабрики для тестовых объектов с использованием Ruby DSL.

0 голосов
/ 04 октября 2010

Классический способ использования осветителей в рельсах - создать файл осветителей yaml, что-то вроде этого:

record1:
  name: xxxx
  attachment: test/fixtures/files/attachements/xxx.psd

record2:
  .... etc.

сохраните его в test / fixtures / projects.yml

, а затем вВ верхней части теста напишите:

Светильники: проекты

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

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