zoukankan      html  css  js  c++  java
  • 【编程思想】【设计模式】【测量模式Testability】Setter_injection

    Python版

    https://github.com/faif/python-patterns/blob/master/dft/setter_injection.py

    #!/usr/bin/python
    # -*- coding : utf-8 -*-
    import datetime
    
    """
    Port of the Java example of "Setter Injection" in
    "xUnit Test Patterns - Refactoring Test Code" by Gerard Meszaros
    (ISBN-10: 0131495054, ISBN-13: 978-0131495050) accessible in outdated version on
    http://xunitpatterns.com/Dependency%20Injection.html.
    
    production code which is untestable:
    
    class TimeDisplay(object):
    
        def __init__(self):
            self.time_provider = datetime.datetime
    
        def get_current_time_as_html_fragment(self):
            current_time = self.time_provider.now()
            current_time_as_html_fragment = "<span class="tinyBoldText">{}</span>".format(current_time)
            return current_time_as_html_fragment
    """
    
    
    class TimeDisplay(object):
    
        def __init__(self):
            pass
    
        def set_time_provider(self, time_provider):
            self.time_provider = time_provider
    
        def get_current_time_as_html_fragment(self):
            current_time = self.time_provider.now()
            current_time_as_html_fragment = "<span class="tinyBoldText">{}</span>".format(current_time)
            return current_time_as_html_fragment
    
    
    class ProductionCodeTimeProvider(object):
        """
        Production code version of the time provider (just a wrapper for formatting
        datetime for this example).
        """
    
        def now(self):
            current_time = datetime.datetime.now()
            current_time_formatted = "{}:{}".format(current_time.hour,
                                                    current_time.minute)
            return current_time_formatted
    
    
    class MidnightTimeProvider(object):
        """
        Class implemented as hard-coded stub (in contrast to configurable stub).
        """
    
        def now(self):
            current_time_is_always_midnight = "24:01"
            return current_time_is_always_midnight
    Python转载版
  • 相关阅读:
    ajax数据查看工具(chrome插件)
    JavaScript性能优化小知识总结
    jsonp
    学习Javascript闭包(Closure)
    浅析闭包和内存泄露的问题
    设备像素比
    【前端福利】用grunt搭建自动化的web前端开发环境-完整教程
    java开发的web下载大数据时的异常处理
    Node.js中的exports与module.exports的区分
    Task与Thread间的区别
  • 原文地址:https://www.cnblogs.com/demonzk/p/9035694.html
Copyright © 2011-2022 走看看