我正在编写一个类似 ATM 系统的套接字/服务器解决方案。如果有人能告诉我我错过了什么,我将不胜感激。出于某种原因,运行存根测试套件时出现以下错误:
# Running tests:
.E
Finished tests in 0.002411s, 829.4384 tests/s, 414.7192 assertions/s.
1) Error:
test_0001_connects_to_a_host_with_a_socket(AtmClient::connection):
NoMethodError: undefined method `new' for #<SpoofServer:0x9dce2dc @clients=[], @server=#<TCPServer:fd 5>>
/media/wildfyre/Files/Programming/KTH/progp/Atm/spec/client/SpoofServer.rb:12:in `start'
/media/wildfyre/Files/Programming/KTH/progp/Atm/spec/client/client_spec.rb:12:in `block (3 levels) in <top (required)>'
2 tests, 1 assertions, 0 failures, 1 errors, 0 skips
我的 minispec 文件是:
require_relative '../spec_helper.rb'
require_relative '../../lib/AtmClient.rb'
require_relative 'SpoofServer.rb'
describe AtmClient do
it "can be created with no arguments" do
AtmClient.new.must_be_instance_of AtmClient
end
describe 'connection' do
it "connects to a host with a socket" do
spoof = SpoofServer.new.start
client = AtmClient.new.connect
spoof.any_incoming_connection?.must_be true
spoof.kill
end
end
end
我的 SpoofServer 文件是:
require 'socket'
class SpoofServer
def initialize
end
def start
@clients = []
@server = TCPServer.new 1234
@listener_thread = new Thread do
@clients.add @server.accept
end
end
def any_incoming_connection?
@clients.size > 0
end
def kill
@listener_thread.exit
@clients.each {|c| c.close}
end
end