控制器规格有和没有拉姆达+“应该改变”

我测试了一个简单密码重置行动,并希望RSpec中的“变”匹配的lambda表达式。 但它并没有为这个控制器操作的工作。 一切正常没有这种匹配。 这里是规格:

describe "#update" do it "Updates the password and resets the token" do @user = Factory :user getter = lambda{ get :edit, :id => @user.perishable_token, :user => {:password_confirmation => "new_password", :password => "new_password"} @user.reload } getter.should change(@user, :password) getter.should change(@user, :perishable_token) end it "Updates the password and resets the token" do @user = Factory :user old_password = @user.password old_token = @user.perishable_token get :edit, :id => @user.perishable_token, :user => {:password_confirmation => "new_password", :password => "new_password"} @user.reload.password.should != old_password @user.perishable_token.should != old_token end end

第二它块作品,第一个没有。 我试图打印在lambda里面的价值观,他们确实没有改变。

非常感谢您对这个问题的任何想法!

--------------解决方案-------------

您需要使用call来实际执行拉姆达在你的第一个例子。 您分配lambda来getter ,但决不做一个getter.call实际执行拉姆达,并得到你的结果。

所以,事实证明了变化,匹配调用PROC。 所以这是没有问题的。 不过,我打电话编辑并没有更新。 所以,没有什么是应该改变。 另外口令只存在于其中的密码是刚刚成立,并且从DB以来的明文密码,其中不检索不保存用户对象。 下面是现在工作的代码:

describe "#update" do
it "Updates the password and resets the token" do
@user = Factory.create :user
getter = lambda{
post :update, :id => @user.perishable_token, :user => {:password_confirmation => "new_password",
:password => "new_password"}
@user.reload
}
getter.should change(@user, :crypted_password)
getter.should change(@user, :perishable_token)
end
end

我认为它会变成是一个愚蠢的错误,而是两个在一个...

分类:Ruby on Rails的 时间:2012-01-01 人气:0
本文关键词: Ruby on Rails的,RSpec的
分享到:

相关文章

  • Ruby on Rails的Rspec的要求冲突 2013-11-01

    以下是我的问题,我已经Rspec的安装在它启动了一个项目的每一次我想测试的东西有require_relative现在这不是一个问题,直到我想最终测试我的控制器和不能似乎得到的功能get , post经常收到undefined function错误. 如果我把我的控制器是这样 RSpec.describe ApplicationController, :type => :controller do end 我收到uninitialized constant ApplicationControlle

  • Ruby on Rails的rspec的错误 2012-03-15

    我下面通过"学习Rails的用例"一书,而我试图运行测试. 出于某种原因,我不能让RSpec的正常工作. 如果我运行rspec spec/命令他指示,我得到以下错误: $ rspec spec/ /home/desktop/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup': You have already activated rspec-core 2.

  • Ruby on Rails的rspec的错误? 2013-05-20

    我每次执行RSpec的时间,无论忽略了最低我做了什么,如果代码是错误的,它告诉: nev3rkill@nev3rkill-virtual-machine ~/Documentos/ruby $ rspec /home/nev3rkill/.rvm/gems/ruby-1.9.2-p318/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `load': no such file to load -- /home/nev3rk

  • 学习Ruby on Rails“的RSpec” 2012-04-15

    我下面通过例子红宝石书学会迈克尔·哈特,这本书告诉你这样做捆绑安装,然后生成RSpec的:安装. 我运行3.0.4轨和1.9.2红宝石. 我得到的答案也找不到发电机rspec的安装. 有谁请赐教到哪里RSpec的应该是. 谢谢 --------------解决方案------------- 打开你的Gemfile Rails项目和写的: gem "rspec-rails" 然后执行安装包. Rspec的驻留在你的Rails项目目录规格/.

  • 为什么我的Ruby on Rails的RSpec的测试合格既@plugin和@plugins? 2012-06-02

    我在基金会的Rails 2本书的第10章. 我们正在使用RSpec. 我们正在测试的"PluginsController"的"索引"的行动. 下面是该控制器的代码: class PluginsController < ApplicationController # GET /plugins # GET /plugins.xml def index @plugins = Plugin.find(:all) respond_to do |format| forma

  • 运行耙规范时,Ruby on Rails的Rspec的迁移数据库:插件 2014-02-14

    我想测试一个插件,我写运行: rake spec:plugins 当我执行这个命令看来,它降低我的数据库表(在我的测试数据库),然后运行没有装给我一个干净的数据库任何插件迁移. 这通常是罚款,但我使用了一个插件,让我设置MySQL索引的长度的限制,所以如果我运行一个迁移,而该插件,然后我得到一个语法错误. 这意味着,我不能RSpec的耙子命令来测试我的插件. 我找不到任何文档此命令,有没有办法得到执行之前,它不运行任何迁移? --------------解决方案------------- 试着在

  • 如何RSpec的API基于Ruby on Rails应用(无DATABSE)? 2012-10-31

    1.My的Ruby on Rails应用程序没有数据库. 2.所有功能,甚至登录是通过API调用请求的用户完成. 例如,要验证用户,我需要以下API调用. Api::User.verify_password("username", "password") 如何写RSpec的测试用例覆盖所有的功能? 引导我正确的方向. --------------解决方案------------- 两件事情: 不要从您的应用程序测试API 存根所有API调用来专注于您的业务逻辑 例:

  • RSpec的测试失败 - 用户登出 - Ruby on Rails的3教程书9章 2012-11-13

    发现了类似的问题(Ruby on Rails的个别指导测试不及格),但其答案不适合我的问题. 试着包括尽可能相关信息,我可以. Rspec的错误: 失败:1)SessionsController删除"摧毁"应该签署一个用户从故障/错误:controller.should_not be_signed_in预计signed_in? 返回false,得到了真正的#`./spec/controllers/sessions_controller_spec.rb:58:in块(3级)' 考试: d

  • Ruby on Rails的:找不到“RSpec的”发电机? 2014-05-25

    想学习的Ruby on Rails的时刻,正在学习有关测试. 我下面的教程使用RSpec的,所以我跑的命令: sudo gem install rspec sudo gem install rspec-rails script/generate rspec 只得到一个错误信息"找不到"RSpec的"发电机". 我搜索了关于这一主题的答案,但我不能找到一个很清楚的任何地方. 我运行Ubuntu 10.10,红宝石1.8.7,2.3.5导轨和RSpec的/ RSpec的

  • Ruby on Rails的 - 狮身人面像在做测试Rspec的未索引数据 2014-06-02

    我使用的狮身人面像和狮身人面像的思维在我的Ruby on Rails应用程序来搜索数据. 所以,我有这个测试来检查我的工作: require 'spec_helper' require 'thinking_sphinx/test' describe SearchesController do render_views #Start search server in test mode before(:all) do ThinkingSphinx::Test.init ThinkingSphinx

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.428 (s). 10 q(s)