Q:

minitest say method missing but method is present what am I missing?

Why am I getting this undefined method error when the method is defined?
(I'm now going to wast some text so the dumb "your post is mostly code" warning goes away. Since a real developer spends most of their time reading code and this is a simple problem I don't need any more words)
Here is my error message:
$ ruby roman_numerals_test.rb
Run options: --seed 35835

# Running:

Run options: --seed 35835

# Running:

SSSSSSSSSSEE

Error:
RomanNumeralsTest#test_1:
NoMethodError: undefined method `to_roman' for 1:Integer
    roman_numerals_test.rb:8:in `test_1'

bin/rails test roman_numerals_test.rb:7

Here is my test file:
gem 'minitest', '>= 5.0.0'
require 'minitest/autorun'
require_relative 'roman_numerals'

# Common test data version: 1.0.0 070e8d5
class RomanNumeralsTest < Minitest::Test
  def test_1
    assert_equal 'I', 1.to_roman
  end

  def test_2
    assert_equal 'II', 2.to_roman
  end

  def test_3
    skip
    assert_equal 'III', 3.to_roman
  end

  def test_4
    skip
    assert_equal 'IV', 4.to_roman
  end

  def test_5
    skip
    assert_equal 'V', 5.to_roman
  end

  def test_6
    skip
    assert_equal 'VI', 6.to_roman
  end

  def test_9
    skip
    assert_equal 'IX', 9.to_roman
  end

  def test_27
    skip
    assert_equal 'XXVII', 27.to_roman
  end

  def test_48
    skip
    assert_equal 'XLVIII', 48.to_roman
  end

  def test_59
    skip
    assert_equal 'LIX', 59.to_roman
  end

  def test_93
    skip
    assert_equal 'XCIII', 93.to_roman
  end

  def test_141
    skip
    assert_equal 'CXLI', 141.to_roman
  end

  def test_163
    skip
    assert_equal 'CLXIII', 163.to_roman
  end

  def test_402
    skip
    assert_equal 'CDII', 402.to_roman
  end

  def test_575
    skip
    assert_equal 'DLXXV', 575.to_roman
  end

  def test_911
    skip
    assert_equal 'CMXI', 911.to_roman
  end

  def test_1024
    skip
    assert_equal 'MXXIV', 1024.to_roman
  end

  def test_3000
    skip
    assert_equal 'MMM', 3000.to_roman
  end

  def test_bookkeeping
    assert_equal 2, BookKeeping::VERSION
  end

end

And here is my code:
module BookKeeping
  VERSION = 2
end

class Numeral

  def initialize(number)
    @number = number
  end

  def to_roman
    roman_hash = {
        1000 => 'M',
        900  => 'CM',
        500 => 'D',
        400 => 'CD',
        100 => 'C',
        90  => 'XC',
        50 => 'L',
        40 => 'XL',
        10 => 'X',
        9  => 'IX',
        5 => 'V',
        4 => 'IV',
        1 => 'I'
    }
    my_string = ""
    roman_hash.each do |key, value|
      (@number / key).times {my_string << value; @number = @number - key}
    end
    my_string

  end
end

A:

You're defining to_roman for Numeral objects but 1 is an Integer. Try 
class Integer

or
class Numeric

(superclass of Integer)

