I am writing a socket / server solution similar to an ATM system. I would be grateful if someone would tell me what I was missing. For some reason, I get the following error when starting my test suite:
# 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
My minispec file:
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
My SpoofServer file:
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
source share