Day 15-隔离框架 (isolation Framework) - 概念基本介绍 (核心技术-7)

何谓隔离框架 (isolation Framework)

今天走到了铁人赛一半的赛点,终於要提到我们标题 NSubstitute 相关概念的介绍了XD。好,那先提单元测试的艺术是如何定义隔离框架:

隔离框架(isolation framework):是一套可用来帮助写程序的 API,使用这套 API 来建立假物件,比手刻假物件要容易得多、快得多、简洁许多。

所以隔离框架的目的就是要帮助我们撰写假物件;此外,隔离框架也是能在执行期间建立和设定假物件的类别库,而这些物件也被称为动态虚设常式物件(dynamic stub)和动态模拟物件(dynamic mock)。


为什麽要隔离框架

我们先透过程序码来看一个例子(来源於单元测试的艺术),假设今天有一个介面长这样:

public interface IComplicatedInterface
{
    void Method1(string a, string b, bool c, int x, int y)
    void Method2(string b, bool c, int x, int y)
    void Method3(bool c, int x, int y)
}

从这个介面可以看出有三个方法,三个方法的参数个数加起来总共十二个;因此,我们可以写出以下的假物件类别:

public class MytestableComplicatedClass : IComplicatedInterface
{
    public string meth1_a;
    public string meth1_b;
    public bool meth1_c;
    public int meth1_x;
    public int meth1_y;
    
    public string meth2_b;
    public bool meth2_c;
    public int meth2_x;
    public int meth2_y;
    
    public bool meth3_c;
    public int meth3_x;
    public int meth3_y;
    
    public void Method1(string a, string b, bool c, int x, int y)
    {
        meth1_a = a;
        meth1_b = b;
        meth1_c = c;
        meth1_x = x;
        meth1_y = y;
    }
    
    public void Method2(string b, bool c, int x, int y)
    {
        meth2_b = b;
        meth2_c = c;
        meth2_x = x;
        meth2_y = y;
    }
    
    public void Method3(bool c, int x, int y)
    {
        meth3_c = c;
        meth3_x = x;
        meth3_y = y;
    }
}

是不是觉得很长,而且这还没牵涉撰写商业逻辑的程序码在其中,若导入隔离框架,则可以自动化处理上述的手刻流程,那明天会介绍如何在专案上安装 NSubstitute,并说明 NSubstitute 的基本介绍。


<<:  架构介绍

>>:  铁人赛 Day15 -- RWD响应式网页 -- 用手机、电脑、平板的拢来啦

Day 1 : 前言与DevOps

前言 大家好,我是Lufor,第一次参加铁人赛。这是我的主要Blog网址: https://lufo...

JavaScript入门 Day19_function介绍2

昨天讲到了function,那今天继续在讲function其他的东西 今天讲讲括号里面的要干嘛,其实...

掌握SEO优化3大要点,让搜寻引擎知道「我就是你要的网站!」

网站上线後,开始接触网站经营相关的资讯时,才发现经营网站没那麽简单? 网站最重要的工作就是招揽潜在客...

新增装备 - VSCode 套件介绍

前情提要 身後传来了声音:「哈罗,我叫艾草,是你的入门引导学姊。」 我回头一看却没看到人。 「这里!...

VoK 系统功能权责划分 ( I ) - day13

权责划分 续VoK整合登入 当使用者登入系统後,无论是因为使用者权责亦或是为了系统安全,通常会建立适...