C#中“模拟”一词的含义是啥? [关闭]
Posted
技术标签:
【中文标题】C#中“模拟”一词的含义是啥? [关闭]【英文标题】:What is the meaning of the term "Mocking" in C#? [closed]C#中“模拟”一词的含义是什么? [关闭] 【发布时间】:2013-07-08 06:10:39 【问题描述】:在C#/WPF
的上下文中,mocking 一词是什么意思?
【问题讨论】:
真的吗?谷歌疼吗? bit.ly/13LJxUe 为什么不直接问他们? 我知道文本的含义是什么。我询问了使用 mock 在 c# 中测试模拟的示例。如果我表达得不好,我很抱歉。 你没有要求示例... 请尝试一下,并搜索一些示例。周围会有很多。一旦你遇到了一些令人困惑的具体问题,你可以提出一个更具体的问题。 【参考方案1】:在单元测试的上下文中,模拟是提供一种类型的假实现,您的被测代码与之交互。
见http://en.wikipedia.org/wiki/Mock_object
Roy Osherove 的书 "The Art of Unit Testing" 有很好的解释,如果您开始使用 C# 进行单元测试,我推荐它
模拟与存根的不同之处在于,它会验证与您的测试代码的交互。存根仅返回预定义的值以帮助对代码进行单元测试。
【讨论】:
【参考方案2】:看!!我会给你一些简单的例子,让你理解。
假设类中有一个方法ParseEBCDICFileToASCII(strig fileName)
,并且该文件还验证文件是否存在File.Exist()
。现在,您正在编写用于解析逻辑的单元测试,并且您在 ParseEBCDICFileToASCII
方法中提供了一些文件路径,那么此方法将始终失败或返回,因为您提供的任何文件在现实中都不存在。
在这种情况下,您将模拟File.Exist()
,这样,无论何时调用,您都将返回一个假/模拟值。所以在单元测试中,File.Exist
的逻辑将始终返回模拟值。
在某些情况下,您正在为任何 Web 服务的客户端应用程序编写测试,而对于单元测试,您不需要实际的 Web 服务。您可以编写一个模拟的 Web 服务,您的实际逻辑将始终命中模拟服务返回模拟值。
所以 mocking 是一种返回假值的方法,这样你就可以更专注于测试你的实际逻辑......
【讨论】:
以上是关于C#中“模拟”一词的含义是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章