Tag: 测试

阻止Rails测试删除种子数据

我使用seeds.rb来填充一些状态模型参考数据: State.create :name => ‘Alabama’, :abbreviation => ‘AL’ State.create :name => ‘Alaska’, :abbreviation => ‘AK’ # … 虽然我没有使用状态装置(因为它的种子数据开始,我认为不必为了测试而必须复制它),Rails测试框架似乎在测试期间删除了所有状态种子数据。 (我正在删除,重新创建,迁移和重新安装测试数据库,并在unit testing运行之前确认数据存在。) 结果是这个断言在seeds.rb中成功但在一行测试中失败: assert_equal 51, State.all.size 1) Failure: test_state_seeds_are_present(StateTest) [/test/unit/state_test.rb:24]: expected but was . 1 tests, 1 assertions, 1 failures, 0 errors 我已经尝试在基本测试类fixtures语句中明确列出非状态模型,以及翻转事务fixtures标志(正如预期的那样,这只会影响测试期间创建的记录)。 当然,正在考虑的测试本身并不删除这些记录。 始终删除州记录。 有没有办法告诉Rails只是脱掉种子数据? 我是否需要复制灯具中的所有数据以确保它重新加载? 如果没有重大政治事件,我预计州的数据会相对稳定。 TIA

如何在Rails测试中使用参数轻松解析URL?

我有一些代码将return_to URL嵌入到我想测试的重定向(如OpenID)中: def test_uses_referrer_for_return_to expected_return_to = ‘http://test.com/foo’ @request.env[‘HTTP_REFERER’] = expected_return_to get :fazbot # @response.redirected_to looks like http://service.com?…&return_to=[URI-encoded version of URL above]&… encoded_return_to = (something_here)[:return_to] assert_equal expected_return_to, URI.unencode(encoded_return_to) end 它是一个Rails ActionController::TestCase ,所以我可以访问各种辅助方法; 我找不到合适的人。 当然我可以使用URI.parse获取URL的params部分,然后将其拆分为/&|?/然后再次拆分为’=’ ,但我希望这已经为我完成了。 另外,如果我错过了URL转义或参数解析中的一些模糊规则,该怎么办? 必须在ActionPack或ActiveSupport中执行此操作,但我无法找到它。 谢谢 :)

如何使用gets.chomp测试函数?

我有一个使用gets.chomp的简单函数,如下所示: def welcome_user puts “Welcome! What would you like to do?” action = gets.chomp end 我想用ruby的内置TestCase套件测试它,如下所示: class ViewTest < Test::Unit::TestCase def test_welcome welcome_user end end 问题是,当我运行该测试时, gets.chomp停止测试,因为它需要用户输入某些内容。 有没有办法可以使用ruby模拟用户输入?