Тестирование Rails: действие assert render

Предполагаю, что вы используете «локальный» режим только для целей тестирования. Я решил эту проблему, создав специальную временную папку перед запуском теста, а затем удаляю ее вручную (в моем случае я использую локальный режим в JUnit, поэтому временная папка удаляется автоматически).

Вы можете изменить путь к папке temp для Spark по свойству spark.local.dir.

SparkConf conf = new SparkConf().setMaster("local")
                                .setAppName("test")
                                .set("spark.local.dir", "/tmp/spark-temp");

После завершения теста я удалю папку /tmp/spark-temp вручную.

20
задан deb 4 June 2010 в 12:48
поделиться

2 ответа

Вид будет отрисован, действие вызвано. Попробуйте так:

@controller.expects(:new)
0
ответ дан 29 November 2019 в 22:28
поделиться

Допустим, у вас есть действие контроллера для создания, как показано ниже:

def create
  @post = Post.new(params[:post])

  respond_to do |format|
    if @post.save
      format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
      format.xml  { render :xml => @post, :status => :created, :location => @post }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
    end
  end
end

А вот стандартное представление Scaffold 'posts # new'

<h1>New post</h1>

<% form_for(@post) do |f| %>
<%= f.error_messages %>
...... # just to show, it's bigger....

Теперь, если сообщение создано успешно, вы хотите, чтобы его перенаправили, но если это не удается, мы просто хотим повторно отрендерить действие NEW. В приведенном ниже тесте используется то, что наш главный человек DJTripleThreat сказал использовать assert_template .

  test "should not create post and instead render new" do
    post :create, :post => { }

    assert_template :new
    #added to doubly verify
    assert_tag :tag => "h1", :child => /New post/
  end

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

Надеюсь, это поможет.

9
ответ дан 29 November 2019 в 22:28
поделиться
Другие вопросы по тегам:

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