Tag: 测试

在发出请求之前,Rspec 2.7访问控制器会话

我正在使用Rspec测试我的控制器,在向路径发出请求之前,我似乎无法设置当前控制器的会话变量。 例如,这有效: describe “GET /controller/path” do it “if not matching CRSF should display message” do get controller_path request.session[:state] = “12334” end end 这不起作用(我得到一个错误,说session不是Nil类的方法): describe “GET /controller/path” do it “if not matching CRSF should display message” do request.session[:state] = “12334” get controller_path end end 有任何想法吗?

添加索引到电子邮件列的罪魁祸首unit testing失败

我是设计和导轨的新手,我只是将设计与我的示例应用程序集成在一起。 我注意到在创建用户模型后,我的所有unit testing都失败了。 我试着缩小它,发现即使为user_test.rb生成的断言“真相”也失败了: ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \ column email is not unique: INSERT INTO “users” (… 一旦我注释掉add_index … # add_index :users, :email, :unique => true …并重新运行rake db:test:load使用ruby -I test test/unit/user_test.rb rake db:test:load并重新运行测试。 有没有人经历过这个?

可选地在Rails 3function测试中测试缓存

通常,我希望我的function测试不执行动作缓存。 Rails似乎在我身边,在environment/test.rb默认为config.action_controller.perform_caching = false 。 这导致正常的function测试没有测试缓存。 那么我如何在Rails 3中测试缓存。 这个线程中提出的解决方案似乎相当hacky或者对Rails 2: 如何在rails中的function测试中启用页面缓存? 我想做的事情如下: test “caching of index method” do with_caching do get :index assert_template ‘index’ get :index assert_template ” end end 也许还有更好的方法来测试缓存是否被击中?

如何为function测试设置locale default_url_options(Rails)

在我的application_controller中,我有以下设置来包含具有url_for生成的所有路径的语言环境: def default_url_options(options={}) { :locale => I18n.locale } end 我的资源路由有一个:path_prefix =“/:locale” 在网站上正常工作。 但是当涉及到我的function测试时,:locale不会与生成的url一起传递,因此它们都会失败。 我可以通过在我的测试中将语言环境添加到url来解决它,如下所示: get :new, :locale => ‘en’ 但我不想手动将语言环境添加到每个function测试中。 我尝试将default_url_options def添加到test_helper上面,但似乎没有效果。 有什么办法可以更改default_url_options以包含我所有测试的语言环境? 谢谢。

如何在Rails测试中结合自动测试和spork?

自动测试通过仅运行更改的测试来提高测试运行的速度。 但是我想通过使用spork预加载Rails环境来进一步推动它,这样我将获得更快的反馈。 这可能吗? 自动测试: https : //github.com/grosser/autotest Spork: http ://github.com/timcharper/spork

gem测试的策略,以确保gem与Rails 3.x和4.0一起使用?

我已经看到了一些虚拟Rails应用程序的例子(用于测试,因此它们通常在测试或规范下),与Appraisalsgem一起使用,据说可以与Rails 3.x和Rails 4一起使用,但它们看起来很像hackishfunction不全。 这是有点预期的,因为它是一个被剥离的弗兰肯斯坦怪物,试图兼容各种版本的Rails 3以及Rails 4。 我已经提到了试图进行这种测试的项目(截至2013年3月下旬),比如less-rails和ember-rails,但这种用各种版本的Rails测试的方式看起来并不是很干净,而且它是尝试调试非标准的Rails应用程序是非常重要的,特别是在测试版的Rails中。 如果有一个更干净的测试方法,那么你可以通过一些魔法来测试每个Rails应用程序的完整Rails应用程序,通过一些魔法来设置或维护并不困难并且不需要非标准的路径攻击在某些地方等 使用各种版本的Rails(包括至少最新的Rails 3.1.x,3.2.x和4.0.0.beta1)测试gems的可用策略是什么,每种版本的优缺点是什么?

在Rails 3中使用Cucumber / Capybara,如何设置自定义User-Agent字符串?

在我的Rails 3应用程序中,我有不同的iPhone与桌面浏览器的布局。 我正在尝试使用Cucumber / Capybara测试iPhone布局。 到目前为止,我在请求的HTTP标头中设置iPhone User-Agent字符串的所有尝试都失败了。 我已经使用Cucumber和Capybara教程跟踪了测试自定义头文件和ssl,但它似乎没有在HTTP请求中设置User-Agent字符串。 如果我只是使用我的iPhone浏览我的Rails应用程序,我会得到正确的布局。 我正在使用Rack-Mobile-Detect将Rails request.format设置为:iphone。 关于如何使这项工作的任何想法? 我准备放弃Capybara并回到Webrat。 这是我到目前为止所拥有的: Feature: Detect Browser In order to have different layouts for iPhone vs. desktop browsers As a developer I want to show different layouts for different browsers Scenario: Show home page with desktop layout Given I am using “a desktop browser” When […]

在Rails 2.2+中测试HTTP Basic Auth

作为我正在构建的API的一部分,有一种用户身份validation方法,成功时返回有用的用户信息,API令牌等的有效负载。 在为处理此问题的控制器编写function测试时,我遇到了测试HTTP Basic auth的问题; 我发现很多博客提到以下代码应该用于欺骗标头以进行身份​​validation尝试: @request.env[‘HTTP_AUTHORIZATION’] = ActionController::HttpAuthentication::Basic.encode_credentials(email, pass) 问题是这没有效果; authenticate_with_http_basic看不到标题,因此即使存在有效凭据也会返回false。 我错过了什么吗? 请注意,如果在回答中有用,应用程序将被冻结到Rails 2.2.2。

如何在Rails上编写Stripe checkout的集成测试?

我试图为我的Rails 3.2应用程序为Stripe的checkout.js [ https://checkout.stripe.com/checkout.js ]编写集成测试。 在手动测试时(使用Stripe的测试键)条纹检查对我来说正常工作,但我无法让fill_in检测并fill_in条带结帐iframe模式中的电子邮件字段。 我正在使用无端 javascript的poltergeist ,虽然也用capybara-webkit和甚至selenium测试了同样的问题。 我要测试的是完整的订阅注册流程,以显示新用户在Stripe中输入付款详细信息后可以创建订阅者帐户 – 但我无法通过Stripe结帐弹出窗口。 这是我before .. do : describe “show Stripe checkout”, :js => true do before do visit pricing_path click_button ‘plan-illuminated’ stripe_iframe = all(‘iframe[name=stripe_checkout_app]’).last Capybara.within_frame stripe_iframe do fill_in “email”, :with => “test-user@example.com” fill_in “billing-name”, :with => “Mr Name” fill_in “billing-street”, :with => “test Street” fill_in “billing-zip”, […]

rails_fu在rails 3中进行测试

我正在尝试使用attachment_fu为工作文件上传function编写规范。 但是,作者为测试提供的示例代码要求我需要action_controller/test_process以便我可以访问ActionController::UploadedStringIO类。 我之前在rails 2.x中使用过这个,但对于rails 3,它无法找到test_process文件。 如何在rails 3中测试文件上载function?