我不明白为什么程序没有通过测试而找不到错误。也许其他人可以给我一个暗示? 这是程序代码:
class Fiction_Generator
def location_adj
location_adj = ["alternative-timeline",
" Tolkeinesque",
" Neo-noir",
" Alternate-history",
" Ancient",
" Post-apocalyptic",
" Dystopian",
" Metaphorical",
" Anachronistic",
" Leather-clad" ,
" Coal-powered",
" Dragon-filled"]
item_adj = location_adj[rand(location_adj.length)]
end
def location_noun
location_noun = [
" America",
" Japan",
" Soviet Russia",
" Steampunk Britain",
" Medieval Europe",
" Egyptian empire",
" Atlantis",
" Terraformed Mars",
" Antarctica",
" One-way spaceflight",
" Outer Rim world",
" Set from Road Warrior"]
item_noun = location_noun[rand(location_noun.length)]
end
def protagonist
protagonist = [
" Ferris Bueller wannabe",
" student of metaphysics",
" milquetoast office drone",
" schlub with mild <abbr>OCD</abbr>",
" farm boy with dreams",
" techno-obsessed geek",
" brooding loner",
" wisecracking mercenary",
" idealistic revolutionary",
" journeyman inventor",
" collector of oddities",
" rocketman of the 24th century"]
item_protagonist = protagonist[rand(protagonist.length)]
end
def discovery
discovery = [
" magic ring",
" arcane prophecy",
" dusty tome",
" crazy old woman",
" alien artifact",
" enchanted sword",
" otherworldly portal",
" dream-inducing drug",
" encrypted data feed",
" time-traveling soldier",
" exiled angel",
" talking fish"]
item_discovery = discovery[rand(discovery.length)]
end
def adversary
adversary = [
" a megalomaniacal clown",
" a government conspiracy",
" a profit-obsessed corporation",
" a sneering witch",
" supernatural monsters",
" computer viruses made real",
" murderous robots",
" an army led by a sadist",
" forces that encourage conformity",
" a charismatic politician on the rise",
" humanity's selfish nature",
" his own insecurity vis-a-vis girls"]
item_adversary = adversary[rand(adversary.length)]
end
def assistant
assistant = [
" sarcastic female techno-geek",
" tomboyish female librarian",
" shape-shifting female assassin",
" leather-clad female in shades and red leather jacket",
" girl who's always loved him for himself",
" bookish female scholar with mousy brown hair",
" cherubic girl with pigtails and spunk",
" female who inexplicably becomes attracted to the damaged protagonist for unstated reasons"]
item_assistant = assistant[rand(assistant.length)]
end
def inventory
inventory = [
" wacky pet",
" electric chainsaw",
" closet full of assault rifles and one bullet",
" reference book",
" meat cleaver",
" facility with magic",
" condescending tone",
" discomfort in formal wear"]
item_inventory = inventory[rand(inventory.length)]
end
def conflict
conflict = [
" a fistfight atop a cable car",
" a daring rescue preceding a giant explosion",
" a demonic sacrifice",
" a philosophical argument punctuated by violence",
" a false victory with the promise of future danger",
" the invocation of a spell at the last possible moment",
" eternal love professed without irony",
" the land restored to health",
" authorial preaching through the mouths of the characters",
" convoluted nonsense that squanders the reader's goodwill",
" wish-fulfillment solutions to real-world problems",
" a cliffhanger for the sake of prompting a series"]
item_conflict = conflict[rand(conflict.length)]
end
def title_adj
title_adj = [
" Time",
" Micro",
" Aero",
" Cosmo",
" Reve",
" Necro",
" Cyber",
" Astro",
" Psycho",
" Steam",
" Meta",
" Black"]
item_title_adj = title_adj[rand(title_adj.length)]
end
def title_noun
title_noun = [
" punks",
" mechs",
" noiacs",
" opolis",
" nauts",
" phages",
" droids",
" bots",
" blades",
" trons",
" mancers",
" Wars"]
item_title_noun = title_noun[rand(title_noun.length)]
end
def title
title_adj + title_noun
end
def story
"In a(n)" + location_adj + location_noun + " a young" + protagonist + " stumbles
across a(an)" + discovery + " which spurs him into conflict with" + adversary + "
with the help of a" + assistant + " and her" + inventory + " culminating in" +
conflict
end
def all
puts "Your story is called: " + #{title}
puts "And it goes like this:"
puts #{story}
end
end
fict_gen = Fiction_Generator.new
fict_gen.all
测试是:
require "#{File.dirname(__FILE__)}/Fiction_Generator.rb"
describe Fiction_Generator do
before(:all) do
@fict_gen = Fiction_Generator.new
end
it "should load up location adjectives" do
@fict_gen.location_adj.size.should == 12
end
it "should load up location adjectives" do
@fict_gen.location_adj.should include("coal-powered")
end
it "should load up location nouns" do
@fict_gen.location_noun.size.should == 12
end
it "should load up location nouns" do
@fict_gen.location_noun.should include("Japan")
end
it "should load up protagonist" do
@fict_gen.protagonist.size.should == 12
end
it "should load up protagonist" do
@fict_gen.protagonist.should include("collector of oddities")
end
it "should load up discovery" do
@fict_gen.discovery.size.should == 12
end
it "should load up discovery" do
@fict_gen.discovery.should include("encrypted data feed")
end
it "should load up adversary" do
@fict_gen.adversary.size.should == 12
end
it "should load up assistant" do
@fict_gen.assistant.size.should == 8
end
it "should load up inventory" do
@fict_gen.inventory.size.should == 8
end
it "should load up conflict" do
@fict_gen.conflict.size.should == 12
end
it "should load up title adjectives" do
@fict_gen.title_adj.size.should == 12
end
it "should load up title noun" do
@fict_gen.title_noun.size.should == 12
end
it "should randomly generate a title for the story" do
@fict_gen.title.should be_true
end
it "should randomly generate a story using an item from each array" do
@fict_gen.story.should be_true
end
after(:all) do
puts "your story is called #{@fict_gen.title} "
puts "and it goes like this:"
puts @fict_gen.story
end
end
对于长代码很抱歉,但我真的需要帮助。
它提供以下错误消息:
1) Fiction_Generator should load up location adjectives
Failure/Error: @fict_gen.location_adj.size.should == 12
expected: 12
got: 8 (using ==)
# ./fiction_spec.rb:21:in `block (2 levels) in <top (required)>'
2) Fiction_Generator should load up location adjectives
Failure/Error: @fict_gen.location_adj.should include("coal-powered")
expected " Dragon-filled" to include "coal-powered"
# ./fiction_spec.rb:25:in `block (2 levels) in <top (required)>'
3) Fiction_Generator should load up location nouns
Failure/Error: @fict_gen.location_noun.size.should == 12
expected: 12
got: 11 (using ==)
# ./fiction_spec.rb:29:in `block (2 levels) in <top (required)>'
4) Fiction_Generator should load up protagonist
Failure/Error: @fict_gen.protagonist.size.should == 12
expected: 12
got: 30 (using ==)
# ./fiction_spec.rb:38:in `block (2 levels) in <top (required)>'
5) Fiction_Generator should load up protagonist
Failure/Error: @fict_gen.protagonist.should include("collector of odditi
expected " student of metaphysics" to include "collector of oddities"
# ./fiction_spec.rb:42:in `block (2 levels) in <top (required)>'
6) Fiction_Generator should load up discovery
Failure/Error: @fict_gen.discovery.size.should == 12
expected: 12
got: 13 (using ==)
# ./fiction_spec.rb:47:in `block (2 levels) in <top (required)>'
7) Fiction_Generator should load up discovery
Failure/Error: @fict_gen.discovery.should include("encrypted data feed")
expected " crazy old woman" to include "encrypted data feed"
# ./fiction_spec.rb:51:in `block (2 levels) in <top (required)>'
8) Fiction_Generator should load up adversary
Failure/Error: @fict_gen.adversary.size.should == 12
expected: 12
got: 26 (using ==)
# ./fiction_spec.rb:55:in `block (2 levels) in <top (required)>'
9) Fiction_Generator should load up assistant
Failure/Error: @fict_gen.assistant.size.should == 8
expected: 8
got: 27 (using ==)
# ./fiction_spec.rb:59:in `block (2 levels) in <top (required)>'
10) Fiction_Generator should load up inventory
Failure/Error: @fict_gen.inventory.size.should == 8
expected: 8
got: 10 (using ==)
# ./fiction_spec.rb:63:in `block (2 levels) in <top (required)>'
11) Fiction_Generator should load up conflict
Failure/Error: @fict_gen.conflict.size.should == 12
expected: 12
got: 44 (using ==)
# ./fiction_spec.rb:67:in `block (2 levels) in <top (required)>'
12) Fiction_Generator should load up title adjectives
Failure/Error: @fict_gen.title_adj.size.should == 12
expected: 12
got: 6 (using ==)
# ./fiction_spec.rb:71:in `block (2 levels) in <top (required)>'
13) Fiction_Generator should load up title noun
Failure/Error: @fict_gen.title_noun.size.should == 12
expected: 12
got: 7 (using ==)
# ./fiction_spec.rb:74:in `block (2 levels) in <top (required)>'
答案 0 :(得分:0)
您在初始化方法中发生的所有错误,正如您在此处列出的那样。在每种情况下,错误都是相同的,“错误的参数数量(0表示1)”。
这意味着您需要了解如何构建Fiction_Generator对象。在这种情况下,initialize方法要求您传入IO对象。所以不要只使用
fict_gen = Fiction_Generator.new
您需要在新方法中传递IO对象
fict_gen = Fiction_Generator.new(#IO object here)
编辑:
所以你从上面的代码中删除了构造函数方法,现在我不知道你的初始化方法是什么样的,所以我写的内容可能不再适用了。但是,错误仍然在初始化方法中,因此请将精力集中在那里。