Tag: unit testing

如何输出rubyunit testing的名称

我有一个unit testing(例子是修改Test :: Unit文档 ) require ‘test/unit’ class TC_MyTest < Test::Unit::TestCase def test_something assert(true) end end 当我执行它时,我得到: Loaded suite C:/test Started . Finished in 0.0 seconds. 1 tests, 1 assertions, 0 failures, 0 errors 我想得到这样的东西( test_something输出): Loaded suite C:/test Started test_something . Finished in 0.0 seconds. 1 tests, 1 assertions, 0 failures, 0 errors

RSpec的主题与let之间有什么区别? 什么时候应该使用它们?

http://betterspecs.org/#subject有一些关于subject和let 。 但是,我仍然不清楚它们之间的区别。 此外,SOpost反对在RSpec测试中使用之前,之后和主题的论点是什么? 说不要使用任何一个subject或let更好。 我该去哪儿? 我感到很困惑。

Selenium RC:自动在多个浏览器中运行测试

所以,我已经开始创建一些使用Selenium RC直接在浏览器中测试我的Web应用程序的Rubyunit testing。 我正在使用Selenum-Client作为ruby。 我已经为我inheritance的所有其他selenium测试创建了一个基类。 这会创建大量SeleniumDriver实例,并在每个实例上调用所有缺少的方法。 这基本上是并行运行测试。 其他人如何自动化这个? 这是我的实现: class SeleniumTest < Test::Unit::TestCase def setup @seleniums = %w(*firefox *iexplore).map do |browser| puts 'creating browser ' + browser Selenium::SeleniumDriver.new("localhost", 4444, browser, "http://localhost:3003", 10000) end start open start_address end def teardown stop end #sub-classes should override this if they want to change it def start_address "http://localhost:3003/" end […]

has_many同时尊重factory_girl中的构建策略

情况 # Models class User < ActiveRecord::Base has_many :items end class Items :user) do |u| u.items {|items| [items.association(:item), items.association(:item)]} end Factory.define(:item) do |i| i.color “red” end Factory.define(:item_with_user, :parent => :user) do |i| i.association(:user) end 问题 如果你运行@user = Factory(:user_with_items)那么@user.items包含这两个项目。 问题是这些项目与数据库中的用户没有关联。 如果你重新加载关联@user.items(true)那么你会得到一个空数组。 我知道你可以手动构建它们或者自己创建辅助方法来构建对象图,但我想避免这种情况。 题 所以,我的问题是如何在尊重构建策略的同时在factory_girl中建立一个has_many关系?

模拟系统调用ruby

知道一种模拟%[]的方法吗? 我正在编写测试代码,这些代码会进行一些系统调用,例如: def log(file) %x[git log #{file}] end 并且希望在测试此方法时避免实际执行系统调用。 理想情况下,我想模拟%x [..]并断言正确的shell命令传递给它。

如何使用RSpec测试`rand()`?

我有一个类似这样的方法: def some_method chance = rand(4) if chance == 1 do # logic here else # another logic here end end 当我使用RSpec来测试这个方法时,它内部的rand(4)总是生成0.我没有测试Rails的rand方法,我正在测试我的方法。 测试我方法的常见做法是什么?

在Ruby的Test :: Unit :: TestCase中,如何覆盖initialize方法?

我正在与Test :: Unit挣扎。 当我想到unit testing时,我想到了每个文件的一个简单测试。 但是在Ruby的框架中,我必须改为: class MyTest < Test::Unit::TestCase def setup end def test_1 end def test_1 end end 但是每次调用test_ *方法都会运行setup和teardown。 这正是我不想要的。 相反,我想要一个只为整个类运行一次的设置方法。 但我似乎无法在不破坏TestCase的初始化的情况下编写自己的initialize()。 那可能吗? 还是我让这绝望地变得复杂?

如何使用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模拟用户输入?