そのままだと ‘autodetect’: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) と出る
123456789
$ vim Gemfile
Before
#gem 'therubyracer', :platforms => :ruby
After
gem 'therubyracer', :platforms => :ruby
$ bundle install
$ mkdir spec/models
$ vim spec/models/user_spec.rb
# -*- coding: utf-8 -*-
require 'spec_helper'
describe User do
context '何も入力しなかった場合' do
subject{User.new}
it { should_not be_valid }
it { should have(1).errors_on(:name) }
it { should have(2).errors_on(:age) }
end
context '名前が文字数をオーバーしている場合' do
subject{User.new(name: 'aaaaaaaaaabbbbbbbbbbc',age: 10)}
it { should_not be_valid }
it { should have(1).errors_on(:name) }
it { should have(0).errors_on(:age) }
end
context '年齢が範囲を超えている場合' do
subject{User.new(name: 'taro',age: 1001)}
it {should_not be_valid}
it{ should have(0).errors_on(:name) }
it{ should have(1).errors_on(:age) }
end
context '正常なデータがセットされた場合' do
subject{User.new(name: 'taro',age: 20)}
it {should be_valid}
end
end
ブラウザでも確認可能
何も入力しないでuserを追加しようとすると怒られる
3.3 テストの実行
123456789101112131415161718192021222324
$ bundle exec rspec
(以下のような結果がでるはず)
User
正常なデータがセットされた場合
should be valid
名前が文字数をオーバーしている場合
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
should not be valid
should have 1 errors on :name
should have 0 errors on :age
年齢が範囲を超えている場合
should not be valid
should have 0 errors on :name
should have 1 errors on :age
何も入力しなかった場合
should not be valid
should have 1 errors on :name
should have 2 errors on :age
Finished in 0.1475 seconds
10 examples, 0 failures
Randomized with seed 15644
$ mkdir spec/steps/
$ vim spec/steps/users_steps.rb
# encoding: utf-8
step 'ユーザー管理の一覧画面を開く' do
visit '/users'
end
step '画面を目視' do
save_and_open_page
end
step ':name リンクをクリックする' do |name|
first(:link, name).click
end
step ':name ボタンをクリックする' do |name|
first(:button, name).click
end
step 'ユーザー管理の新規登録画面が表示される' do
current_path = URI.parse(current_url).path
current_path.should == '/users/new'
end
step 'ユーザー管理の詳細画面が表示される' do
current_path = URI.parse(current_url).path
current_path.should == '/users/1'
end
step 'ユーザー管理の新規登録画面を開く' do
visit '/users/new'
end
step ':field に :value と入力する' do |field, value|
fill_in(field, :with => value)
end
FATAL: Peer authentication failed for user "postgres"
6.1 解決方法
pg_hba.confをいじる
PostgreSQL 9.3 でやってるので自分の環境では
123456789
$sudo vim /var/lib/pgsql/9.3/data/pg_hba.conf
## 変更前
# "local" is for Unix domain socket connections only
local all all peer
## 変更後
# "local" is for Unix domain socket connections only
local all all trust
# -*- coding: utf-8 -*-
require 'spec_helper'
describe User do
context '何も入力しなかった場合' do
subject{User.new}
it {should_not be_valid}
it{ should have(1).errors_on(:name) }
it{ should have(2).errors_on(:age) }
end
context '名前が文字数をオーバーしている場合' do
subject{User.new(name: 'aaaaaaaaaabbbbbbbbbbc',age: 10)}
it {should_not be_valid}
it{ should have(1).errors_on(:name) }
it{ should have(0).errors_on(:age) }
end
context '年齢が範囲を超えている場合' do
subject{User.new(name: 'taro',age: 1001)}
it {should_not be_valid}
it{ should have(0).errors_on(:name) }
it{ should have(1).errors_on(:age) }
end
context '正常なデータがセットされた場合' do
subject{User.new(name: 'taro',age: 20)}
it {should be_valid}
end
end
# encoding: utf-8
step 'ユーザー管理の一覧画面を開く' do
visit '/users'
end
step '画面を目視' do
save_and_open_page
end
step ':name リンクをクリックする' do |name|
first(:link, name).click
end
step ':name ボタンをクリックする' do |name|
first(:button, name).click
end
step 'ユーザー管理の新規登録画面が表示される' do
current_path = URI.parse(current_url).path
current_path.should == '/users/new'
end
step 'ユーザー管理の詳細画面が表示される' do
current_path = URI.parse(current_url).path
current_path.should == '/users/1'
end
step 'ユーザー管理の新規登録画面を開く' do
visit '/users/new'
end
step ':field に :value と入力する' do |field, value|
fill_in(field, :with => value)
end
Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/HelloWorld/workspace
[workspace] $ /bin/sh -xe /tmp/hudson2324844114097437367.sh
+ echo Hello World
Hello World
Finished: SUCCESS