Tag: rspec2

rspec和nil和be_nil有什么区别

我正在使用rspec和断言之类的 student.name should be nil student.name should be_nil 两者似乎都有效。 使用be nil和be_nil有什么区别???

rspec测试,如何在我的情况下获取id?

我的控制器有一个rsepc测试,在我的测试中,我有以下代码片段: … params= {SOME PARAMETERS} post :create, params 上面的代码在我的控制器中测试create方法, create方法创建一个实例对象并将其保存到数据库中。 现在的问题是如何在数据库中获取创建的实例对象的id ? 看来(我不确定)我需要查询测试数据库中的这个对象,如何查询? (PS:我知道有Factory可以用来创建对象实例,但这是一个测试控制器,使用Factory会松开测试控制器的创建方法的目的。所以,请不要建议我使用Factory ) 我想知道如何根据我的代码获取我创建的对象实例的ID? 谢谢:)

render_views返回NoMethodError

我目前正在阅读Michael Hartl的Ruby on Rails教程,在本教程的第3.2.2节中,他谈到了使用RSpec来测试页面的标题。 我的测试(我自己编写,遵循他的教程)一直未通过标题测试(它可以找到标签,但标题总是一个空白字符串),并且一些搜索谷歌告诉我,我需要包含函数render_views传递测试。 我的问题是无论我尝试什么,RSpec NoMethodError为render_views返回render_views 。 我试过的事情: spec_helper.rb config.render_views describe “Static Pages” do render_views … end在spec文件中describe “Static Pages” do render_views … end describe “Static Pages” do RSpec::Rails::ViewRendering.render_views … end在spec文件中describe “Static Pages” do RSpec::Rails::ViewRendering.render_views … end 所有这些都返回NoMethodError 。 我没有完全遵循他的Gemfile,所以Ruby和相关gem的版本是: Ruby:1.9.3-p125 铁轨:3.2.9 rspec:2.12.0 rspec-rails:2.12.0 capycabra:2.0.1 我在Windows 7上使用RubyMine 4.5.4。在命令提示符下运行测试会返回相同的错误。 spec文件是static_pages_spec.rb ,位于spec/requests 我的static_pages_spec.rb的代码: require_relative ‘../spec_helper’ describe “Static […]

RSpec should_receive宏包含需要测试的内容的id

我怎么写这个,所以它通过没有硬编码1 。 鸡肉和鸡蛋。 @sender = Factory(:user) @receiver = Factory(:user) mailer = double mailer.should_receive(:deliver) Mailer.should_receive(:email).with(1, @sender.id, @receiver.id).and_return(mailer) # This will create an object with id #1 to make this test pass @object = Object.create(:sender => @sender, :receiver => @receiver)

在Rspec中添加控制器宏

我试图为Rspec定义一些控制器宏。 我使用rails 3并在spec / support / macros / controller_macros.rb中定义了我的宏,该文件如下所示: module ControllerMacros def self.login_admin #code end end 在我的规范助手中,我有: config.include(ControllerMacros, :type => :controller) 所以在我的控制器规范中,我只是在我的管理测试中调用login_admin,但是当我使用我得到的方法时 undefined local variable or method `login_admin’ for # (NameError) 起初我假设没有包含controller_macros.rb但是当我向文件添加“puts”但是显示文件至少被执行时。 我看不出我的设置有什么问题,并且将login_admin方法复制到describe块中工作得很好,所以我不确定它有什么问题。

将自定义目录(源和规范)添加到Rails 3项目中的自动测试

我有一个使用RSpec2作为我的测试框架的Rails 3应用程序,我可以使用自动测试来观察我的模型和spec目录以进行更改,并在文件更改时重新运行我的规范套件。 我想在其中添加一个包含一些自定义类的目录(RAILS_ROOT / lib / some_project / lib / .rb)及其相应的规范(RAILS_ROOT / spec / some_project / _spec.rb),以便自动测试会自动获取更改所有这些文件并根据需要重新运行。 如何让autotest在这些其他目录中观看这些文件? 我怀疑我必须向RAILS_ROOT / autotest / discover.rb添加一些内容,但我不确定该怎么做。

针对每个用户角色使用RSpec重复测试描述

使用RSpec创建一些控制器测试,我发现自己为每个可能的用户角色重复了几个测试用例。 例如 describe “GET ‘index'” do context “for admin user” do login_user(“admin”) it “has the right title” do response.should have_selector(“title”, :content => “the title”) end end context “for regular user” do login_user(“user”) it “has the right title” do response.should have_selector(“title”, :content => “the title”) end end end 这是一个简单的例子,只是为了表明我的观点,但我有很多重复的测试…当然也有一些测试对每个上下文都是唯一的,但这并不重要。 有没有办法只编写一次测试,然后在不同的上下文中运行它们?

rspec / capybara:如何模拟传入的POST请求? (机架测试不起作用)

我需要通过来自Cloudmailin的POST请求接收传入的电子邮件作为multipart-formdata。 POST类似于以下内容: Parameters: {“to”=>””, “from”=>”whomever@example”, “subject”=>”my awesome subject line…. 实际上,接收和解析电子邮件非常简单,因为电子邮件只是以params:params [:to],params [:from]等发布。但是,如何在rails中模拟此POST请求? 我构建了一个虚拟rails应用程序来测试Cloudmailin,所以我有一个实际的请求。 但是,它是一个6k字符的文件,所以我想加载这个文件作为POST请求的参数。 我已经尝试使用内置的rails post和post_via_redirect方法来加载文件,但它会转义所有参数(\“to \”),这是不行的。 有任何想法吗?

不需要的符号来转换哈希键的字符串

当我在我的控制器中分配时 @my_hash = { :my_key => :my_value } 并通过执行测试该控制器 get ‘index’ assigns(:my_hash).should == { :my_key => :my_value } 然后我收到以下错误消息: expected: {:my_key=>:my_value}, got: {“my_key”=>:my_value} (using ==) 为什么这种自动符号转换为字符串? 为什么它会影响哈希的键?

使用Rspec 2和Devise在Rails 3中测试助手

我的帮助程序代码看起来像这样(并且工作正常btw): module ProvidersHelper def call_to_review(provider) if user_signed_in? && review = Review.find_by_provider_id_and_user_id(provider.id, current_user.id) link_to “Edit Your Review”, edit_provider_review_path(provider, review), :class => “call_to_review” else link_to “Review This Provider”, new_provider_review_path(provider), :class => “call_to_review” end end end 不幸的是,当我运行我的测试时,这会产生以下错误: undefined method `user_signed_in?’ for # # ./app/helpers/providers_helper.rb:3:in `call_to_review’ 很明显,当rspec运行测试时, Devise::Controllers::Helpers不会包含在我的助手中。 任何可能有助于此工作的建议? 编辑:为了提供更多信息,我的spec_helper确实有这个: config.include Devise::TestHelpers, :type => :controller config.include Devise::TestHelpers, :type => […]