rõ ràng là tôi khá mới mẻ đối với đường ray, vì vậy hãy gắn bó với tôi.đường ray chuyển các tham số sang phương thức 'mới'
Tôi đã thêm một constructor để mô hình của tôi
class Movie < Media
attr_accessible :director, :studio
attr_accessor :director, :studio
validates_presence_of :director, :studio, :title
def initialize title, director, studio
@title = title
@director = director
@studio = studio
end
end
và loại sai lầm thứ cho tôi. Befor Tôi đã có một phương pháp 'mới' trong bộ điều khiển của tôi như thế này
def new
@movies = Movie.new
end
và nó làm việc độc đáo trước khi khởi tạo đến cùng. Nó đòi hỏi các tham số phải được chuyển tới phương thức 'mới', nhưng điều đó đã được thực hiện sau khi một khung nhìn được mở để truyền các đối số từ một người dùng và lưu chúng. Bây giờ tôi không thể mở điểm cho rằng vì tôi nhận được một lỗi
wrong number of arguments (0 for 3)
Các nhà xây dựng đã được bổ sung do thực tế tôi bắt đầu ghi chép lại bài kiểm tra cho ứng dụng của tôi và thiết lập vaules mặc định cho các nhà xây dựng sẽ vô hiệu hóa bài kiểm tra đó. Đề xuất giải quyết vấn đề này?
EDIT: xét nghiệm của tôi trông như thế này:
require 'spec_helper'
describe Movie do
before :each do
@movie = Movie.new "Bullet", "John", "20th"
end
describe "#{new}" do
it "returns new object of Movie" do
@movie.should be_an_instance_of Movie
end
it "throws ArgumentError when give less than 3 parameters" do
lambda {Movie.new(:director => "John", :studio => "20th")}.should raise_exception ArgumentError
end
end
describe "#title" do
it "returns the correct title" do
@movie.title.should eql "Bullet"
end
end
describe "#director" do
it "returns the correct director" do
@movie.director.should eql "John"
end
end
describe "#studio" do
it "returns the correct studio" do
@movie.studio.should eql "20th"
end
end
end
Nếu không có constructor rằng tất cả các cuộc thử nghiệm thất bại ....
Đề xuất: Nếu bạn chỉ cần đặt giá trị mặc định để thử nghiệm, hãy sử dụng nhà máy để thử nghiệm cung cấp các cách đặt mặc định và không làm chảy máu mã này vào mã ứng dụng của bạn. Nếu bạn cần làm điều này vì các lý do khác, [xem câu hỏi này] (http://stackoverflow.com/questions/328525/what-is-the-best-way-to-set-default-values-in-activerecord) – numbers1311407
Tôi làm các đối số được minh chứng trong các bài kiểm tra của mình. Không phải vấn đề. Kiểm tra đã được kiểm tra nếu có ít hơn 3 đối số được chứng minh, để làm điều đó đã phải thêm các nhà xây dựng, bằng cách làm như vậy vấn đề này xảy ra. –
Ok, đề xuất mới: Không viết các bài kiểm tra phá vỡ chức năng active_record cốt lõi vì không có lý do gì, buộc bạn phải viết mã truy cập vào các thành phần đường ray được sử dụng rộng rãi để khắc phục chúng. 'ActiveRecord :: Base # initialize' chấp nhận một đối tượng tham số, không phải là một danh sách các đối số. Nếu bạn nhấn mạnh vào việc phá vỡ một phần chính của active_record thì đây sẽ là vấn đề đầu tiên của bạn. – numbers1311407