zoukankan      html  css  js  c++  java
  • rspec 针对元编程的测试

    待测试类
     1 class MyClassDynamic
     2   DEFAULT_METHOD_NAME = :my_dynamic_method
     3 
     4   def initialize(method_name = nil)
     5     method_name = DEFAULT_METHOD_NAME unless method_name
     6 
     7     method_definition = Proc.new { method_name.to_s }
     8     self.class.send(:define_method, method_name, method_definition)
     9   end
    10 end

    rspec

     1 require 'spec_helper'
     2 
     3 shared_examples "a dynamic my class" do |method_name = nil|
     4   let(:address) { method_name.nil? ? MyClassDynamic.new : MyClassDynamic.new(method_name) }
     5 
     6   it "creates the method" do
     7     address.should respond_to method_name
     8   end
     9 
    10   it "returns the method name as a string" do
    11     address.send(method_name).should eq(method_name.to_s)
    12   end
    13 end
    14 
    15 describe MyClassDynamic do
    16   it_behaves_like "a dynamic my class", MyClassDynamic::DEFAULT_METHOD_NAME
    17   it_behaves_like "a dynamic my class", :my_dynamic_method
    18   it_behaves_like "a dynamic my class", :your_dynamic_method
    19 end
  • 相关阅读:
    素数筛法
    UVA, 967 Circular
    软件开发一些常用工具
    iOS 一些常用方法笔记
    iOS 项目调试
    UINavigation的基本使用
    Tomcat多实例部署
    五联疫苗介绍
    互联网公司架构
    分布式事务
  • 原文地址:https://www.cnblogs.com/lizhenjiang/p/7391159.html
Copyright © 2011-2022 走看看