Tag: bdd

黄瓜的路由问题

我正在使用rails 3和黄瓜,除了这个小问题外,一切顺利 Given I am on the “edit automobile” page No route matches {:controller=>”automobiles”, :action=>”edit”} (ActionController::RoutingError) 现在路径在paths.rb中设置为edit_automobile_path 在routes.rb我有汽车作为资源,我搭建了它 所以请告诉我我错过了什么,显然路线是定义和匹配的,因为我跑了耙路线并看到了路线。 请指出我正确的方向

我可以覆盖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)一个需要太长时间的http请求?

如果rspec请求时间太长,我该如何测试行为? 我正在考虑使用线程来模拟这个: describe “Test” do it “should timeout if the request takes too long” do lambda { thread1 = Thread.new { #net::http request to google.com } thread2 = Thread.new { sleep(xx seconds) } thread1.join thread2.join }.should raise_error end end 我想确保在首次提出请求之后,另一个线程“开始”,在这种情况下,它只是一个hibernatexx秒。 然后我应该期望请求超时,因为执行时间太长 我认为有更好的方法来做到这一点。 鉴于我要求的url不相关。 我只是想测试一下,如果执行时间太长,它确实会超时。 我可以使用stub(),expect()或任何rspecfunction来模拟这个吗? 有没有什么方法可以将’块’传递给存根方法 http_request_to_google.stub(:connection).executethisblock(sleep for xx seconds) .and_throw error ? 任何帮助表示赞赏

使用Rspec连接链式方法

我想调用一个只返回一条记录的named_scope,但是named_scope返回一个数组,这不是什么大问题,因为我可以用.first链接它。 Model.named_scope(param).first 这是有效的,我正在努力的是如何存根链接的电话。 有没有人有关于如何通过Rspec嘲笑来实现这一目标的参考或答案?

菠菜与黄瓜对于轨道中的BDD

我是从BDD开始的。 想知道从黄瓜或菠菜开始哪个更好。 我的印象是菠菜是新的。 看这里 我应该从哪一开始。 标准是 – 全面支持。 灵活使用 第三方工具和API集成。 再一次,它可能是新手的无知问题:水豚在哪里适合图片。

在Ruby On Rails上学习BDD的途径是什么?

我想在Ruby On Rails上启动BDD我应该学习什么? 我对BDD,RSpec或Cucumber一无所知。 什么是最好的学习方法? 教程? 包含“我应该测试什么样的行为?”之类的东西。 等等 谢谢!

黄瓜:自动步骤文件创建?

当我运行黄瓜时,它会显示我应该定义的可能步骤,这是RSpec书中的一个例子: 1 scenario (1 undefined) 4 steps (4 undefined) 0m0.001s You can implement step definitions for undefined steps with these snippets: Given /^I am not yet playing$/ do pending end When /^I start a new game$/ do pending end Then /^the game should say “Welcome to CodeBreaker”$/ do pending end Then /^the game should say […]

rspec测试的问题,未定义的方法’post’

当有人通过URL发送查询时,我正在编写一个规范来测试mashup_controller的行为。 我需要模拟URL中包含的参数,我读到post()方法会这样做,但是当我收到错误时: 1) MashupController simulates query Failure/Error: post :create NoMethodError: undefined method `post’ for # # ./mashup_controller_rspec.rb:9:in `block (2 levels) in ‘ Finished in 0.20199 seconds 1 example, 1 failure Failed examples: rspec ./mashup_controller_rspec.rb:7 # MashupController simulates query 这是我的代码: require ‘spec_helper’ require ‘mashup_controller.rb’ describe MashupController do it “simulates query” do post :create end end 对不起,如果我没有任何意义。 […]

如何使用黄瓜在场景之间共享状态

我有一个function“从外部网站导入文章”。 在我的第一个场景中,我测试从外部网站导入链接列表。 Feature: Importing articles from external website Scenario: Searching articles on example.com and return the links Given there is an Importer And its URL is “http://example.com” When we search for “demo” Then the Importer should return 25 links And one of the links should be “http://example.com/demo.html” 在我的步骤中,我在@result数组中有25个链接。 在我的第二个场景中,我想采取其中一个链接并测试我正确解析文章的事实。 现在显然我不想每次都去外部网站,特别是现在第一个场景通过了。 我如何继续这里,以便我可以继续测试而不需要为第一个场景发出HTTP请求? 或者我应该运行一次并将@result数组保留在其他方案中,以便我可以继续使用实际结果集吗?