C#开发人员的PowerShell - 第4部分bet188地址

使用J2预设使用VSCO处理

在里面 以前的帖子 我们看到了如何用PowerShell实现函数的方法。功能不仅是构建重用代码的重要方法,还允许创建更大的脚本。每当写入最终生产的代码时,它始终必须确保代码按预期运行。当脚本很小或不调用任何长时间运行的服务时,我们可以简单地通过执行脚本来执行此操作。然而,脚本越复杂或被集成到长期运行过程中,难以确保脚本仍在更改后按预期运行。

这是自动化bet188地址允许确保功能正确性的地方,而无需要求任何伟大的用户交互来执行多个bet188地址场景。

写自动化bet188地址

PowerShell附带它是自己的bet188地址框架 纠缠 。这是事实上标准的PowerShellbet188地址框架,并随附每个安装Windows 10.佩斯特遵循行为驱动的开发(BDD)bet188地址开发风格。我将把它留给您跟进bet188地址驱动开发(TDD)和BDD之间的区别,因为它通常在bet188地址的更友好描述中显示它。
让我们开始看看我们在C#上下文中要做什么。

对于C#样本,我们将使用 xunit.net. 框架跟随 XUNIT模式。让我们假设我们有以下课程我们想bet188地址:

我们可以使用以下bet188地址验证功能:

对于PowerShell相同的功能可以如下所示:

和相应的bet188地址功能如下所示:

从结构中有很多共同点。

请注意,PESTER强烈阐明开发人员与某种命名模式进行文件。当函数处于调用的文件中时 something.ps1.,相应的bet188地址应该是文件 something.tests.ps1..

当我们从PowerShell IDE控制台窗格执行PowerShellbet188地址时,我们将在PowerShell窗口中获得以下结果。

显示TestRunner的控制台输出(以VS代码执行)

您可以在纠结中使用多种断言,因为可以在以下概述中看到:

  • 应该
  • 应该是不切实际的
  • 应该是benulloremaly.
  • 应该匹配
  • 应该匹配
  • 应该存在
  • 应该含有
  • 应该容纳一下
  • 应该扔

嘲笑外部依赖性

在编写自动bet188地址时,一个主题很快就会出现,这是如何管理到外界的依赖关系。在编写自动化bet188地址时,我们可以将它们分成不同的类别:

类别 描述
单位bet188地址 bet188地址代码的核心逻辑。逻辑根据规范实现的bet188地址,并确保核心构建块正在正常工作。没有依赖于其他代码。 PowerShell的模块。应该弥补项目中的大部分自动化bet188地址。
整合bet188地址 bet188地址应用程序的一部分i.e.脚本。确保bet188地址部件在一起工作,这可能涉及脚本本身之外的呼叫服务。
这些bet188地址通常是最容易实现的,但比单位bet188地址更脆弱。可能是由脚本中的其他系统或逻辑错误引起的错误。在大型项目中,您应该具有比集成bet188地址更多的单位bet188地址。
系统bet188地址 bet188地址整个用例场景结束到结束。这些bet188地址应该运行脚本的场景。 “设置新Web服务器实例”,“设置新数据库实例”。他们通常需要很长时间才能运行,可能需要预期工作,就基础设施I.E.进行暂存/bet188地址环境。
通常,您应该只使用系统bet188地址bet188地址您的核心方案。他们通常需要大量的预期投资来创建环境,并且还需要大量的维护,因为一旦改变系统,它们必须调整。

由于PowerShell主要是为自动化基础架构任务而创建的,您将写入的大多数代码都与一个或多个系统进行交互。只要我们的脚本只是阅读,我们可能不觉得需要嘲笑我们的服务即,只要他们没有太慢。但是,当我们开始写作生产系统时,我们肯定会确实希望确定我们的脚本按预期运行。而这就是嘲笑进来的地方。在C#下有多个库嘲笑类的外部依赖性。一个非常受欢迎的人(我的个人最喜欢)是Moq。

因此,让我们假设我们想要模拟外部依赖项,它将我们返回目录中的所有条目。我们会在C#中写下它的东西(有点Lenthy我知道......):

现在在PowerShell中,我们将屏蔽函数如下:

和佩斯特提供了一个方便的嘲弄功能:

这不仅是bet188地址我们的代码的好方法,而无需实际在文件系统上,还会显示我们如何模拟其他依赖项,例如系统时钟(午夜bet188地址任何人?),网络电话等脚本实际上并不实际调用任何外部源。您最有可能看到的另一个好处是执行时间的加速。由于一切都从内存中运行(AKA快速 眨眼微笑)没有网络或磁盘延迟。有关嘲笑的更多信息和选项,请查看 官方文件 of Pester.

执行bet188地址

我们还可以使用以下命令从命令行执行bet188地址:

邀请纠缠

可以使用所描述的参数扩展该命令 这里 。浏览参数时,您可能会注意到它们会为PowerShell脚本提供连续集成(CI)的手段。如此,我们可以通过使用以下参数添加PowerShell步骤来为Visual Studio Team Service(VSTS)或Team Foundation Server(TFS)构建配置添加步骤:

如果您已经拥有构建服务器设置(您可以在几分钟内免费获得VSTS ......),很容易为脚本设置CI作业。并且ci可以是一个真实的睡眠问题 - 所以如果我能拥有这一点折扣是肯定的  微笑

概括

在此帖子中,我们通过如何用PowerShell编写bet188地址并执行它们。此外,我们看到了我们如何模拟依赖性。我们进一步研究了bet188地址在开发期间不仅可以执行bet188地址,还可以如何在自动构建过程中执行bet188地址I.E.持续集成(CI)环境。

参考

查看我以前的帖子,了解C#开发人员的PowerShell开始使用PowerShell:

您可以在其上找到有关纠缠的更详细信息 项目页面 .

外部参考资料

Updated: