2023-10-08 09:21AM
在 Rails 中,你可以使用单元测试(unit test)来测试控制器(controller)。测试控制器各动作需要编写功能测试(functional test)
控制器负责处理应用收到的请求,然后使用视图渲染响应。功能测试用于检查动作对请求的处理,以及得到的结果或响应(某些情况下是 HTML 视图)。
一个简单的例子:
# test/controllers/posts_controller_test.rb
# 引入测试帮助器,它包含了一些测试所需的设置和辅助方法
require 'test_helper'
# 定义了一个名为 PostsControllerTest 的测试类,继承自 ActionController::TestCase
class PostsControllerTest < ActionController::TestCase
# 定义一个测试方法,它测试能否成功访问 index 动作
test "should get index" do
# 发送一个 GET 请求到 index 动作
get :index
# 断言响应的状态码为成功(HTTP 200)
assert_response :success
end
# 定义一个测试方法,它测试能否成功创建一篇文章
test "should create post" do
# 断言在执行块中的代码后,Post.count
的值会增加
assert_difference('Post.count') do
# 发送一个 POST 请求到 create
动作,并传递参数 { post: { title: "New Post", body: "Lorem Ipsum" } }
post :create, params: { post: { title: "New Post", body: "Lorem Ipsum" } }
end
# 断言重定向到新创建的文章页面
assert_redirected_to post_path(assigns(:post))
end
# 其他测试...
end
然后可以在命令行里面使用下面的命令来运行这个单元测试
bundle exec rails test test/controllers/posts_controller_test.rb
然后会显示
Run options: --seed 62744
# Running:
.
Finished in 0.206153s, 4.8508 runs/s, 4.8508 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
这样就算成功了
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论