第三天,Ruby on Rails,腳手架的應用,自動化測試
2018年12月1日
一、腳手架應用
我這次換了新版本的ruby環境,2.5.3
換源,並設定ruby2.5.3為預設版本
$ gem source --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ rvm use 2.5.3 --default
新建一個專案
$ rails new toy_app
$ cd toy_app
$ bundle install
記得在 $ bundle install之前修改Gemfile檔案,把對應想要用到的gem包及具體版本加進去,如果有不想用的,就使用命令
$ gem install without 不想安裝的gem包名
把對應包加入Gemfile.lock檔案。
建好專案後可以先初始化倉庫,commit,並push到遠端端,然後部署到heroku
$ git init $ git add -A $ git commit -m "Initialize repository" $ git remote add origin https://gitee.com/your name/your repository.git $ git push -u --all $ heroku create $ git push heroku master
然後我們就要用到腳手架來快速搭建一個User模型,包含兩個欄位,name和email:
$ rails generate scaffold User name:string email:string
然後遷移資料庫,建一個User表:
$ rails db:migrate #rails5以上版本使用命令
$ rake db:migrate #rails舊版本命令
執行之後就可以看到資料庫新建了一個User表,並且已經可以訪問對應頁面了。執行$ rails server,然後在瀏覽器輸入localhost:3000/users,就可以看到使用者介面了。rails已經為我們自動建立了增刪改查的功能,非常方便。
如果想要刪除這個User模型,就用destroy命令,destroy命令是和generate相反的命令:
$ rails destroy model User
接著建一個micropost資源用來給使用者發微博。
$ rails generate scaffold Micropost content:text user_id:integer
$ rails db:migrate
再執行就可以看到localhost:3000//microposts頁面了,同樣有增刪改查功能:
接下來可以給微博新增一些驗證資訊,比如說最長不超過40字元,在app/models/micropost.rb裡面新增一句話
class Microposts < ApplicationRecord
validates :content,length:{maximum:40}
end
如果輸入字元太多就會報錯:
接下來的內容我就不仔細講了,參考書Ruby on Rails Tutorial(Michael Hartl)
記得每次做完提交一下,再推送到遠端倉庫。
腳手架雖然方便快捷,但是好多封裝好的東西都沒有真正理解,沒有測試沒有驗證,所以初學者不要被它迷惑了,還是要紮紮實實的學基礎,如果不用腳手架也可以實現腳手架的所有功能,你就不用再看這些教程了。
二、自動化測試
測試可以避免迴歸問題,減少查詢問題的時間,rails在新建專案時已經為我們做了一個測試模組,只需要改動/test資料夾裡的.rb檔案即可,然後執行測試$ rails test完成測試。下面我們新建一個專案sample_app,再建兩個靜態頁面做測試
$ rails new sample_app
$ sample_app
$ bundle install
$ rails generate controller StaticPage home help
$ git add -A
$ git commit -m "Add a static page"
$ git push
然後開啟sample_app/test/controllers/static_page_controller_test.rb檔案,模仿home和help寫一個about頁面的測試,然後執行 $ rails test,這時肯定會報錯,提示你在跟路由中沒有找到about,這時,修改/config/routers.rb檔案
Rails.application.routes.draw do
get 'static_page/home'
get 'static_page/help'
get 'static_page/about'
end
再次執行$ rails test,仍報錯,提示沒有找到about方法,這時修改sample_app/app/controllers/static_page_controller.rb檔案
class StaticPageController < ApplicationController
def home
end
def help
end
def about
end
end
再次執行$ rails test,仍報錯,提示缺少template檔案,此時,就是最後一步,在/sample_app/app/views/static_page/目錄下新建一個檔案about.html.erb,參考home和help的程式碼,複製過來修改一下內容,再次執行$ rails test ,就顯示全部test通過了,此時訪問localhost:3000/static_page/about,顯示出頁面則測試成功。就是一個完整的自動化測過程,先建立測試,再根據錯誤提示一步步的修改,增添檔案,最後直到測試全部通過。
這次寫的過程比較粗略,基本都是書上有的我就沒寫,有什麼問題歡迎留言,共勉!