Tag: 测试

RSpec:“should == …”和“should eql(…)”之间的区别

在RSpec中,使用should == …和should eql(…)之间有什么区别? 我注意到RSpec文档总是使用eql ,但==键入的内容更少,更易于阅读。 我错过了什么?

如何测试Singleton类?

我正在使用RSpec并且想要多次测试Singleton类的构造函数。 我怎样才能做到这一点? 最好的祝福

如何使用Ruby模拟类?

我正在使用minitest / mock并且想要模拟一个类。 我不是试图测试模型类本身,而是试图测试服务(SomeService)与模型(SomeModel)的交互。 我想出了这个(Hack :: ClassDelegate),但我不相信这是个好主意: require ‘minitest/autorun’ require ‘minitest/mock’ module Hack class ClassDelegate def self.set_delegate(delegate); @@delegate = delegate; end def self.method_missing(sym, *args, &block) @@delegate.method_missing(sym, *args, &block) end end end class TestClassDelegation < MiniTest::Unit::TestCase class SomeModel < Hack::ClassDelegate ; end class SomeService def delete(id) SomeModel.delete(id) end end def test_delegation id = '123456789' mock = […]

用rspec调用特定的url

我想在rspec中创建一个get请求。 get :exec, {:query=>”bla”, :id => “something”, :user_id => “user” } 这构建了一个URL,如: /user/query/something/exec?query=bla 问题是我的控制器检查它得到的请求,url必须如下: /user/query/something/_XXX_/exec?query=bla 我怎样才能在rspec中做这样的事情? (XXX在routes.rb文件中是硬编码的。)

在gem上运行测试的简单方法?

有没有一种快速简便的方法来测试已在本地安装的gem? 喜欢: gem test gem_name_to_test rubygems docs说可以将gem: –run-tests run gem: –run-tests放在~/.gemrc文件中,以便在安装gem时运行unit testing。 我不能让它工作,这不是我需要的。

我可以覆盖test_helper.rb中的task:environment来测试rake任务吗?

我在Rakefile中有一系列rake任务,我想测试它作为我的规范的一部分等。每个任务都以下面的forms定义: task :do_somthing => :environment do # Do something with the database here end 其中:environment任务设置ActiveRecord / DataMapper数据库连接和类。 我没有将它作为Rails的一部分使用,但我有一系列测试,我喜欢将它作为BDD的一部分运行。 这个片段说明了我是如何尝试测试rake任务的。 def setup @rake = Rake::Application.new Rake.application = @rake load File.dirname(__FILE__) + ‘/../../tasks/do_something.rake’ end should “import data” do @rake[“do_something”].invoke assert something_in_the_database end 所以我的帮助请求 – 是否有可能在我的test_helper.rb文件中覆盖:environment任务,所以我的rake测试与我的测试数据库交互,而不是生产? 我已经尝试在帮助文件中重新定义任务,但这不起作用。 对解决方案的任何帮助都会很棒,因为过去一周我一直坚持这一点。

rspec中的相关测试

我写了function测试,我需要做的测试取决于之前测试的通过。 假设我有一个按钮,可以打开一个有function的窗口。 也就是说,为了检查这个function,我需要先检查按钮的正确操作(即打开窗口或不起作用)。 所以,我需要这样做,如果按钮点击测试失败,测试没有运行以检查function窗口。 单独编写测试 – 对我来说不是一种选择。 我想看到这样的事情: describe “some tests” do open_result = nil it “should check work button” do click_to_button() open_result = window_opened? open_result.should == true end if open_result describe “Check some functional” do it “should check first functional” it “should check second functional” end end end 我知道这种方法对rspec不起作用。 这只是我想要看到的简单描述。 使用rspec可以实现吗? 如果没有,还有其他方式(gem等)

capybara-webkit:自动保存RSpec测试失败的屏幕截图

如果使用带有Rspec的capybara-webkit测试失败,如何自动保存html和屏幕截图? 如何在RSpec测试失败时执行回调。 加分:如何避免出现以下错误: Capybara::Driver::Webkit::WebkitInvalidResponseError 执行此代码时: require ‘capybara/util/save_and_open_page’ path = “/#{Time.now.strftime(‘%Y-%m-%d-%H-%M-%S’)}” png = Capybara.save_and_open_page_path + “#{path}.png” page.driver.render Rails.root.join(png)

有没有办法在Test :: Unit中撤消任何实例的Mocha存根

就像这个问题一样 ,我也在使用Ryan Bates的nifty_scaffold。 它具有使用Mocha的any_instance方法强制在隐藏在控制器后面的模型对象中的“无效”状态的理想方面。 与我链接的问题不同,我没有使用RSpec,而是使用Test :: Unit。 这意味着这两个以RSpec为中心的解决方案对我不起作用。 是否有一般(即:使用Test :: Unit)方法来删除any_instance存根? 我相信它在我的测试中导致了一个错误,我想validation一下。

Rails 3.1 Rspec为Model创建测试用例validation字段

我正在尝试为User模型创建一个测试用例。 基本上,它将validationfirst_name和last_name是否存在。 我要做的是检查特定字段上的错误是否为空,它应该为空。 然而它总是失败。 这样做的正确方法是什么? 这是我的代码 在我的user_spec.rb上 require ‘spec_helper’ describe User do before do @user = User.new end it “must have a first name” do @user.errors[:first_name].should_not be_empty end it “must have a last name” do @user.errors[:last_name].should_not be_empty end end 在我的user.rb文件上 class User true validates :last_name, :presence => true end