स्पष्ट रूप से मैं रेल के लिए काफी नया हूं, इसलिए मेरे साथ रहें।रेल 'पैरा' पैरामीटर को 'नई' विधि
मैं अपने मॉडल
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
और मेरे लिए चीजें गड़बड़ की इस प्रकार की करने के लिए एक निर्माता जोड़ दिया है। 'नए' इस
def new
@movies = Movie.new
end
की तरह मेरे नियंत्रक में है और यह अच्छी तरह से काम किया है इससे पहले कि इनिशियलाइज़ साथ आया था Befor मैं एक विधि लिया है। इसे 'नई' विधि को पारित करने के लिए पैरामीटर की आवश्यकता होती है, लेकिन उपयोगकर्ता के तर्कों को पारित करने और उन्हें सहेजने के लिए दृश्य खुला होने के बाद किया गया था। अब मैं उस दृश्य तथ्य मैं अपने आवेदन के लिए परीक्षण writting और निर्माता है कि परीक्षण को रद्द होगा के लिए डिफ़ॉल्ट vaules करना प्रारंभ की वजह से नहीं खोल सकता क्योंकि मैं एक त्रुटि
wrong number of arguments (0 for 3)
निर्माता जोड़ दिया गया मिलता है। इसे हल करने पर सुझाव?
संपादित करें: मेरे परीक्षण इस तरह दिखेगा:
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
कि निर्माता सभी परीक्षणों असफल बिना
....
सुझाव: यदि आपको केवल परीक्षण के लिए डिफ़ॉल्ट सेट करने की आवश्यकता है, तो परीक्षण के लिए एक कारखाने का उपयोग करें जो डिफ़ॉल्ट सेट करने के तरीके प्रदान करता है और इसे आपके एप्लिकेशन कोड में खून नहीं करता है। यदि आपको अन्य कारणों से ऐसा करने की ज़रूरत है, [इस प्रश्न को देखें] (http://stackoverflow.com/questions/328525/what-is-the-best-way-to-set-default-values-in-activerecord) – numbers1311407
मैं अपने परीक्षणों में सिद्ध तर्क देता हूं। समस्या नहीं है। टेस्ट जांच कर रहा था कि क्या 3 से कम तर्क साबित हुए हैं, ऐसा करने के लिए इसे कन्स्ट्रक्टर जोड़ना था, ऐसा करने से ऐसा समस्या हुई। –
ठीक है, नया सुझाव: किसी भी कारण से कोर सक्रिय_रेकॉर्ड कार्यक्षमता को तोड़ने वाले परीक्षणों को न लिखें, जिससे आप उन्हें ठीक करने के लिए व्यापक रूप से प्रयुक्त रेल घटकों को कोड काउंटर लिखने के लिए मजबूर कर सकें। 'ActiveRecord :: बेस # प्रारंभिक 'पैरामीटर ऑब्जेक्ट स्वीकार करता है, न कि तर्कों की सूची। यदि आप सक्रिय_रेकॉर्ड के ऐसे प्राथमिक टुकड़े को तोड़ने का आग्रह करते हैं तो यह आपके लिए कई समस्याओं में से पहला होगा। – numbers1311407