- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 Controller 操作和测试。我刚开始使用 Shoulda 进行测试,并且我知道我可以进一步测试 Controller 的某些区域。例如,我的 flash 消息以及验证渲染。
所以我的问题是,我如何在 Shoulda 中正确测试这个 Controller 操作?
我的 Controller 操作(已更改名称以保护无辜者):
def my_action
return redirect_to(root_url) if @site.nil?
@owner = current_site.owner
if request.post?
if params[:password].blank? || params[:email].blank?
flash[:error] = "You must fill in both the e-mail and password fields"
render :action => "my_action"
else
if @owner.authenticated?(params[:password])
@owner.login = params[:email]
@owner.save!
@owner.do_some_method
flash[:success] = "Success."
render :action => "my_action"
else
flash[:error] = "Incorrect password"
render :action => "my_action"
end
end
end
end
我的测试:
context "on POST to :my_action" do
setup do
Owner.any_instance().expects(:do_some_method)
post :my_action, :email => 'foo@bar.com', :password => 'test'
end
should_assign_to :owner
should "Change name and verify password and resend activation key" do
assert_equal true, assigns(:owner).authenticated?('test')
assert_equal 'foo@bar.com', assigns(:owner).login
end
should_respond_with :success
end
最佳答案
现在,您似乎正在测试特定于 Controller 内部模型的功能,这应该在单元测试中。
我建议重构您的 Controller ,以在所有者模型中包含更新所有者电子邮件所需的逻辑。通过这样做,您应该能够将 Controller 简化为一个简单的 if update;别的; end
类型语句,大大简化了 Controller 测试。将逻辑移入模型后,您可以使用内置的 Rails 验证。
其他一些需要考虑的事情:
before_filters
。verify
或在 `config/routes.rb' 中创建路由来检查 if request.post?
。引用资料:
关于ruby-on-rails - 如何使用 Shoulda 正确测试此 Controller 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466120/
我遇到了一个问题,我的模型上的自定义验证导致所有 shoulda 验证失败。 本质上: class User birthday errors.add(:birthday, "Some s
请帮忙: 我想用 minitest 来使用 shoulda。 这是我得到的异常: NoMethodError: undefined method `run_teardown_hooks' for #:
请帮忙: 我想用 minitest 来使用 shoulda。 这是我得到的异常: NoMethodError: undefined method `run_teardown_hooks' for #:
我有一个 User 模型,它有一个 items 的子关联。项目的 :name 对用户来说应该是唯一的,但它应该允许不同的用户拥有同名的项目。 Item 模型当前设置为: class Item < Ap
在 Rails Test Prescriptions 一书中(b10.0,第 176 页),有如下所示的单行断言示例: 应该“成功”{ assert_response :success } 这对我来说
我是单元测试领域的新手;我现在只使用单元测试大约 2 个月。当我在 Ruby 中进行单元测试时,我目前遵循 TDD 风格并使用 Test::Unit::TestCase。我还阅读了 RSpec 以及它
我正在使用一些Shoulda rspec匹配器来测试我的模型,其中之一是: describe Issue do it { should_not allow_value("test").for(:p
我正在尝试使用 rspec 和 shoulda 匹配器作为我的新测试框架,但我对如何获得 should validate_uniqueness_of(:attribute) 感到有些困惑。测试通过。这
我使用带有 shoulda-matcher 的 rspec-rails 来测试我的模型。这是代码: user_ticket.rb class UserTicket < ActiveRecord::Ba
使用 shoulda-matchers 的正确格式是什么?和 RSpec 的新 expect syntax ? 最佳答案 虽然人们当然可以将 shoulda-matchers 与新的期望语法一起使用,
这是我的: context "Create ingredient from string" do context "1 cups butter" do setup
用较小的代码示例再次问这个问题: # this is a dummy shoulda macro that creates a context def self.macro_context
我对模型的属性进行了以下验证: validates :on_ride_photo, presence: true, inclusion: { in: [true, false] } 然后我有以
我在类(class)中遇到以下属性问题。我也有一个在数据库级别强制执行的日期属性,存在为真: 验证 :date, presence: true 除此之外,我需要为以下两个属性强制组合唯一性 valid
我正在尝试让整个设置在我的 Mac 上与 Autotest/Growl/Shoulda 一起工作,以测试我正在为 Authlogic 开发的 gem。 .我过去经常使用 RSpec,但想切换到 Sho
我的 avatar_parts_spec.rb 中有一个 shoulda 匹配器,但我无法让它通过: 测试: require 'rails_helper' RSpec.describe AvatarP
我有一个模型,该模型在数据库级别具有唯一索引,并且模型验证检查范围为多列的唯一性。 # db level add_index :table1, %i[fk_belongs_to_id col1 col
在我的 device 模型中,我有 enum device_type: { ios: 1 , android: 2 } validates :device_type, presence: true,
我有一个自定义验证器(位于 app/validators/uri_validator.rb)用于: validates :link, uri: true 如何在我的规范中指定它? 理想情况下,我希望进
我有以下 Rspec 测试: describe Productlimit do before(:each) do @productlimit = Factory.create(:produ
我是一名优秀的程序员,十分优秀!