我已经test-unit安装和rspec安装(沿-core,-expectations,-mocks和-rails版本2.6.x的).当我运行该命令时rails new foo,它用于test-unit生成测试存根文件而不是rspec.
有没有一个选项,我可以告诉rails使用rspec来生成测试?
我正在阅读建议使用的教程rspec,但我已经经历了很多默认的rails安装.我真的不想重做安装.无论如何,当我跑
$ rails g integration_test named
Run Code Online (Sandbox Code Playgroud)
我明白了
invoke test_unit
create test/integration/named_test.rb
Run Code Online (Sandbox Code Playgroud)
当我跑步时bundle,rspec列出了各种宝石,但事实test_unit并非如此.该教程似乎有rails调用rspec而不是test_unit做任何额外的事情.如何使用rspec集成测试生成器命令使用rails ?
我正在开始为rails 3.0.8应用程序创建测试套件的规划阶段.我正在尝试决定使用哪种测试框架/宝石.通常我更喜欢尽可能坚持Rails惯例.但是,这意味着使用TestUnit.有许多竞争的测试框架可供选择,它们是作为TestUnit的替代品而创建的.多年来TestUnit变得更好了,还是不是一个很好的竞争者?
我也听说过很多关于rspec的好东西.rspec和TestUnit在功能方面是否接近,或者rspec是否将TestUnit从水中吹走?
无论我选择哪种框架,我都希望它拥有良好的支持基础(大量用户和文档),易用性/简单性和持久的未来.
我正在用Test :: Unit编写我的第一个单元测试,我已经达到了需要比较两个数字的程度.令我惊讶的是,我发现以下都没有:
assert_greater_than
assert_lesser_than
assert_greater_or_equal_than
assert_lesser_or_equal_than
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?那我该怎么办?
谢谢
而不是自动运行所有测试用例,有没有办法在ruby测试/单元框架下执行单个测试.我知道我可以通过使用Rake实现这一目标,但我现在还没准备好转向rake.
ruby unit_test.rb #this will run all the test case
ruby unit_test.rb test1 #this will only run test1
Run Code Online (Sandbox Code Playgroud) 我的页面应该包含一个看起来像的链接<a href="/desired_path/1">Click to go</a>.
你会如何使用assert_select测试?我想检查是否存在a标签href="/desired_path/1".你如何测试标签的属性?
有没有资源来解释如何使用assert_select?我阅读了指南和API文档,但没有弄清楚.有没有建议更好的方法来做到这一点?
我在Rails 3中工作并使用内置的测试框架.
谢谢.
我读到某个地方'minitest'是"ruby 1.9.2+的新测试::单位".
但是Ruby 1.9.3似乎包括两个 测试::单位 和 MINITEST,是真的吗?
在默认轨测试,在列出的Rails测试指南 ....之类的东西ActiveSupport::TestCase,ActionController::TestCase被这些使用Test::Unit或Minitest?
在rails指南中,它显示了如下定义的测试示例:
test "should show post" do
get :show, :id => @post.id
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
test string与定义类似名称的方法相反,该语法test_something在任何一个 Test::Unit或Minitest 的文档中都没有提到.来自哪里?Rails是否添加它,或者它实际上是...的一部分......无论是测试lib rails使用的是什么?
PS:请不要告诉我"只使用rspec".我知道rspec.我试图在rails的上下文中探索stdlib替代方案.
我正在与Test :: Unit挣扎.当我想到单元测试时,我想到了每个文件的一个简单测试.但是在Ruby的框架中,我必须改为:
class MyTest < Test::Unit::TestCase
def setup
end
def test_1
end
def test_1
end
end
Run Code Online (Sandbox Code Playgroud)
但是每次调用test_*方法都会运行setup和teardown.这正是我不想要的.相反,我想要一个只为整个类运行一次的设置方法.但我似乎无法在不破坏TestCase初始化的情况下编写自己的initialize().
那可能吗?或者我是否使这无可救药地变得复杂?
在整个测试套件(不仅仅是一个测试类)中的每个方法之前运行设置的最佳方法是什么?
Rspec允许您定义块之前和之后的全局.在Test :: Unit中是否有一个干净的可比方法来执行此操作,不涉及将模块混合到每个测试类中?
RSpec有:
describe "the user" do
before(:each) do
@user = Factory :user
end
it "should have access" do
@user.should ...
end
end
Run Code Online (Sandbox Code Playgroud)
你会如何用Test :: Unit对这样的测试进行分组?例如,在我的控制器测试中,我想在用户登录时以及没有人登录时测试控制器.