修復模型試驗&原始測試底部有迷你測試
我有哪些格式完全相同兩次型試驗,但只有一個作品。我是全新的微型測試或一般測試。我還閱讀了迷你測試&的問題列表,但沒有足夠的技能或理解來找到可以解決發佈的不同問題的修復方案。
目標:的工作在我CampplayTest.rb文件.valid?
,或者爲什麼它的失敗&的理解它的位置(如色器件的blowmage
說.valid我應該用什麼應該到位.save的使用嗎?! )
編輯:顯然,這是我的模型 - 不知道怎麼說是無效的 - 見下文
失敗這裏測試文件原來的錯誤...
require 'test_helper'
class CampplayTest < ActiveSupport::TestCase
# Test one missing from pair of ID
test 'invalid - no campaign' do
county = campplay.new(player_id: 1)
refute county.valid?, 'Campplay passed without a name'
end
end
通過測試文件在這裏...
require "test_helper"
class County_Test < ActiveSupport::TestCase
def setup
@county = County.create(name: "Example Item")
end
test 'valid county' do
assert @county.valid?, 'county must have name'
end
# Test duplicate
test 'invalid - duplicate county' do
county = County.new(name: "Example Item")
refute county.valid?, 'county passed without a name'
end
end
我想...
- 結算運行只是用3條繼承路徑爲
rails c test
- 單獨測試夾具
test_helper.rb
- 切換到測試文件中的integeration測試助手自行宣佈
- 使用設置功能
- 多元化用手&由具有系統吐出了多元化的
Campplay
- Capitolizing
- 使用.save!在
rails c
&rails c test
- 改變
rails generate test_unit:model article title:string body:text
例子&的Fileds符合我的模型rails generate test_unit:model Campplay campaign_id:integer player_id:integer
- 在測試文件更改測試文件名&類名來
Campplay_Test
我的錯誤信息......
2.3.1 :006 > c = Campplay.new(player_id: "1", campaign_id: "1")
=> #<Campplay id: nil, campaign_id: 1, player_id: 1, created_at: nil, updated_at: nil>
2.3.1 :007 > c.valid?
NoMethodError: undefined method `Campplay' for #<Campplay:0x00000004630890>
Did you mean? campaign
from /usr/local/rvm/gems/ruby-2.3.1/gems/activemodel-5.0.0/lib/active_model/attribute_methods.rb:433:in `method_missing'
from /usr/local/rvm/gems/ruby-2.3.1/gems/activemodel-5.0.0/lib/active_model/validator.rb:149:in `block in validate'
from /usr/local/rvm/gems/ruby-2.3.1/gems/activemodel-5.0.0/lib/active_model/validator.rb:148:in `each'
from /usr/local/rvm/gems/ruby-2.3.1/gems/activemodel-5.0.0/lib/active_model/validator.rb:148:in `validate'
(I truncated here to try & not spam people)
test_helper.rb中
ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "rails/test_help"
require "minitest/rails"
class ActiveSupport::TestCase
fixtures :all
end
class ActionController::TestCase
include Devise::Test::ControllerHelpers
end
我Campplay模型...
class Campplay < ApplicationRecord
belongs_to :campaign
belongs_to :player
validates :campaign_id, presence: true
validates :player_id, presence: true
end
寶石列表--local以 「test」
guard-minitest (2.4.6)
minitest (5.10.1, 5.8.3)
minitest-capybara (0.8.2)
minitest-color (0.0.2)
minitest-metadata (0.6.0)
minitest-rails (3.0.0)
minitest-rails-capybara (3.0.0)
rack-test (0.6.3)
rails-dom-testing (2.0.2)
test-unit (3.1.5)
全部衛隊文件...
bundle exec guard
RubyDep: WARNING: Your Ruby is outdated/buggy.
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
RubyDep: WARNING: (To disable warnings, see:http://github.com/e2/ruby_dep/wiki/Disabling-warnings)
12:46:03 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.10.1!
12:46:04 - INFO - Guard is now watching at '/home/ubuntu/workspace/basicB'
12:46:07 - INFO - Running: test/models/campplay_test.rb
RubyDep: WARNING: Your Ruby is outdated/buggy.
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
RubyDep: WARNING: (To disable warnings, see:http://github.com/e2/ruby_dep/wiki/Disabling-warnings)
RubyDep: WARNING: Your Ruby is outdated/buggy.
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
RubyDep: WARNING: (To disable warnings, see:http://github.com/e2/ruby_dep/wiki/Disabling-warnings)
Run options: --seed 24359
# Running:
E
Error:
CampplayTest#test_invalid_-_no_campaign:
NameError: undefined local variable or method `campplay' for #<CampplayTest:0x00000003e05710>
Did you mean? campplays
test/models/campplay_test.rb:14:in `block in <class:CampplayTest>'
bin/rails test test/models/campplay_test.rb:13
E
Finished in 0.275098s, 3.6351 runs/s, 0.0000 assertions/s.
1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
[1] guard(main)>
我對Campplays模式...
create_table "campplays", force: :cascade do |t|
t.integer "campaign_id"
t.integer "player_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["campaign_id"], name: "index_campplays_on_campaign_id"
t.index ["player_id"], name: "index_campplays_on_player_id"
end
Rails的版本 - 可能的情況應該是固定的 - 但現在我的工作清單&後衛不接受的版本只是多了一個好辦法...
mirv:~/workspace (master) $ cd basicB
mirv:~/workspace/basicB (master) $ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
mirv:~/workspace/basicB (master) $ rvm install 2.3.1
Already installed ruby-2.3.1.
To reinstall use:
rvm reinstall ruby-2.3.1
FIX
很簡單,它是損壞的文件...
- rails摧毀模型Campplay
- 軌摹遷移dropCampplay
- 在遷移文件中沒有一個
drop_table :campplays
- 跑
rails g model Campplay campaign:references player:references
- 軌分貝:遷移
- 副本&粘貼我以前的型號代碼,我有救
- 副本&粘貼原我已保存的測試代碼
複製最終的測試文件...
require 'test_helper'
class CampplayTest < ActiveSupport::TestCase
test 'valid Campplay' do
cp = Campplay.new(player_id: "1", campaign_id: "1")
assert cp.valid?, 'Campplay must have player_id'
end
# Test one missing from pair of ID
test 'invalid - no campaign' do
cp = Campplay.new(player_id: 1)
refute cp.valid?, 'Campplay passed without a campaign_id'
end
test 'invalid - no player' do
cp = Campplay.new(campaign_id: 1)
refute cp.valid?, 'Campplay passed without a name'
end
end
我記的修復程序@gaston爲他花時間在上面
對不起被替換,但目前還不清楚你想要做什麼。你的測試文件在哪裏?你知道'rails c'打開一個控制檯並且不運行測試嗎? – sixty4bit
Hi @ sixty4bit ...我認爲控制檯中的映射應該比測試文件更清楚地顯示問題。我想讓'.valid?'工作。此外,'rails c test'是我從rails文檔中取出來的,它在rails控制檯中加載測試env以用於提取錯誤消息 - 儘管它聲稱與運行測試文件相同。我會更新這個問題。 – Mirv
可以顯示廣告系列和Campplay課程嗎?什麼錯誤「測試」無效 - 沒有廣告系列投放? – Gaston