MockTest
基本のモック
require 'test/unit' require 'mock' class PublisherText < Test::Unit::TestCase def test_message # set up expect_message = "hello" mock_subscriber = Mock.new publisher = Publisher.new publisher.add(mock_subscriber) # expectations mock_subscriber.__next(:recevie){ |message| assert_equal(expect_message, message) } # execute publisher.publish(expect_message) mock_subscriber.__verify end end class Publisher def add(subscriver) @subscriver = subscriver end def publish(message) @subscriver.recevie(message) end end
例外を投げるモック
require 'test/unit' require 'mock' class AddUserActionText < Test::Unit::TestCase def test_system_error # set up mock_dao = Mock.new action = AddUserAction.new action.user = "haru01" action.dao = mock_dao # expectations mock_dao.__next(:add){ |user| raise Errno::ENOENT, "not found text" } # execute begin action.execute rescue => error assert_equal("can't add user becouse dao error", error.message) end mock_dao.__verify end end class AddUserAction attr_accessor :user attr_accessor :dao def execute begin dao.add(user) rescue raise "can't add user becouse dao error" end end end