带有Capybara的Rails验证和错误消息

瓦利乔杜里(Wali Chaudhary)

我正在使用Capybara进行带RSpe的TDD。我的代码执行得很好,但是,我对有关错误消息和Capybara的概念感到困惑:

在场景文件“用户无法创建新文章”下的我的规范文件中,我有3个Expect(page).to have_content方法:

这些消息中的第一个是显式写入我的articles_controller文件中,而其他两个消息则未写入任何视图或控制器中,但是仍然可以通过测试!

为什么是这样?是否由于我的Article.rb模型验证给出的默认错误消息与我的规范期望的页面完全匹配?

require "rails_helper"

RSpec.feature "Creating Articles" do
    scenario "A user creates a new article" do
        visit "/"

        click_link "New Article"

        fill_in "Title", with: "Creating a blog" 
        fill_in "Body", with: "Lorem Ipsum" #Does Capybara test for the specific words "Lorem Ipsum," or does it test for the String Datatype?"

        click_button "Create Article"

        expect(page).to have_content("Article has been created")
        expect(page.current_path).to eq(articles_path)
    end

    scenario "A user fails to create a new article" do
        visit "/"

        click_link "New Article"

        fill_in "Title", with: "" 
        fill_in "Body", with: "" 

        click_button "Create Article"

        expect(page).to have_content("Article has not been created")
        expect(page).to have_content("Title can't be blank")
        expect(page).to have_content("Body can't be blank")
    end
end

我的控制器:

class ArticlesController < ApplicationController
  def index
  end

  def new
     @article = Article.new
  end

  def create
    @article = Article.new(article_params)
    @article.save

    if @article.save
        flash[:success] = "Article has been created"
         redirect_to articles_path
    else 
      flash[:danger] = "Article has not been created."
        render new_article_path #or it can be render :new
      end 
  end



  private

    def article_params
        params.require(:article).permit(:title, :body)
    end
end

我的看法:

<h3 class="text-center">Adding New Article</h3>

<div class="row">
  <div class="col-md-12">
    <%=form_for(@article, :html => {class: "form-control", role: "form"}) do |f| %>
        <% if @article.errors.any? %>
            <ul>
                <% @article.errors.full_messages.each do |msg| %>
                    <li>
                        <%= msg %>
                    </li>
                <%end%>
            </ul>
        <%end %>

        <div class="form-group">
            <div class="control-label col-md-1">
                <%= f.label :title %>
            </div>
            <div class="col-md-11">
                <%= f.text_field :title, class: 'form-control', placeholder: "Title of article", autofocus: true %>
            </div>
        </div>
        <div class="form-group">
            <div class="control-label col-md-1">
                <%= f.label :body %>
            </div>
            <div class="col-md-11">
                <%= f.text_area :body, rows: 10, class: 'form-control', placeholder: 'Body of article' %>
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-1 col-md-11">
                <%= f.submit class: 'btn btn-primary btn-lg pull-right' %>
            </div>
        </div>

最后,我的模型:

class Article < ApplicationRecord
    validates :title, presence: true
    validates :body, presence: true
end
伊戈尔·斯普林格(Igor Springer)

在您看来,您有

       <% if @article.errors.any? %>
        <ul>
            <% @article.errors.full_messages.each do |msg| %>
                <li>
                    <%= msg %>
                </li>
            <%end%>
        </ul>
    <%end %>

遍历@articleRails返回的所有错误。当你验证两者的存在titlebodyArticle模型如果属性不存在错误消息显示在点击之后的视图Create Article按钮。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实施带有错误消息的数据验证

来自分类Dev

使用angular ngMessage的带有错误消息的表单验证

来自分类Dev

带有动态错误消息的angularJs表单验证

来自分类Dev

是,带有&nbsp;的验证消息

来自分类Dev

没有看到带有jqueryvalidation和msdropdown的错误消息

来自分类Dev

带有ajax和jquery noty插件的Rails Flash消息

来自分类Dev

带有子域,RSpec和capybara-webkit的Rails集成测试(适用于JavaScript)

来自分类Dev

带有子域,RSpec和capybara-webkit的Rails集成测试(适用于JavaScript)

来自分类Dev

Rails-电子邮件链接验证和带有URL验证的电话号码验证

来自分类Dev

带有动态参数的Bean验证消息

来自分类Dev

带有动态参数的Bean验证消息

来自分类Dev

Rails验证错误消息删除密钥

来自分类Dev

ruby on rails验证不显示错误消息

来自分类Dev

rails 验证错误消息不起作用

来自分类Dev

jQuery验证带有图标的输入字段的内部发送错误消息

来自分类Dev

如何在带有追加的屏幕上显示数据的验证错误消息?

来自分类Dev

jQuery验证,带有包含确认的自定义错误消息

来自分类Dev

输入验证失败时,Zend Framework 1.7转发请求带有错误消息

来自分类Dev

c#如何执行多个验证并返回带有谓词的错误消息

来自分类Dev

jQuery验证自定义方法规则和带有动态名称的消息?

来自分类Dev

在Ruby On Rails中一致显示Flash消息和模型验证错误

来自分类Dev

在Ruby On Rails中一致显示Flash消息和模型验证错误

来自分类Dev

“状态”验证没有错误消息和错误的图标颜色

来自分类Dev

验证和异常与错误消息元组

来自分类Dev

Symfony 2.6表单验证和错误消息

来自分类Dev

如何在bash中退出带有错误消息和错误代码的程序?

来自分类Dev

带有“ import-world”的错误消息

来自分类Dev

带有>,<符号的NetLogo错误消息

来自分类Dev

带有“ import-world”的错误消息

Related 相关文章

  1. 1

    实施带有错误消息的数据验证

  2. 2

    使用angular ngMessage的带有错误消息的表单验证

  3. 3

    带有动态错误消息的angularJs表单验证

  4. 4

    是,带有&nbsp;的验证消息

  5. 5

    没有看到带有jqueryvalidation和msdropdown的错误消息

  6. 6

    带有ajax和jquery noty插件的Rails Flash消息

  7. 7

    带有子域,RSpec和capybara-webkit的Rails集成测试(适用于JavaScript)

  8. 8

    带有子域,RSpec和capybara-webkit的Rails集成测试(适用于JavaScript)

  9. 9

    Rails-电子邮件链接验证和带有URL验证的电话号码验证

  10. 10

    带有动态参数的Bean验证消息

  11. 11

    带有动态参数的Bean验证消息

  12. 12

    Rails验证错误消息删除密钥

  13. 13

    ruby on rails验证不显示错误消息

  14. 14

    rails 验证错误消息不起作用

  15. 15

    jQuery验证带有图标的输入字段的内部发送错误消息

  16. 16

    如何在带有追加的屏幕上显示数据的验证错误消息?

  17. 17

    jQuery验证,带有包含确认的自定义错误消息

  18. 18

    输入验证失败时,Zend Framework 1.7转发请求带有错误消息

  19. 19

    c#如何执行多个验证并返回带有谓词的错误消息

  20. 20

    jQuery验证自定义方法规则和带有动态名称的消息?

  21. 21

    在Ruby On Rails中一致显示Flash消息和模型验证错误

  22. 22

    在Ruby On Rails中一致显示Flash消息和模型验证错误

  23. 23

    “状态”验证没有错误消息和错误的图标颜色

  24. 24

    验证和异常与错误消息元组

  25. 25

    Symfony 2.6表单验证和错误消息

  26. 26

    如何在bash中退出带有错误消息和错误代码的程序?

  27. 27

    带有“ import-world”的错误消息

  28. 28

    带有>,<符号的NetLogo错误消息

  29. 29

    带有“ import-world”的错误消息

热门标签

归档