乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 23|回复: 1

我可以在模拟中处理不区分大小写的字符串吗?

[复制链接]
523

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2016-8-9 06:35:10 | 显示全部楼层 |阅读模式
C#6.0,
NUnit 3.4.1(NuGet软件包),
NUnit3TestAdapter 3.4-1(NuGet软件包),
。Net Framework 4.6.1、
JustMock 2016.2.713.2、
Windows 10 x64,
可测试项目也使用.Net Framework 4.6.1
我们将假设我有一些类正在测试:
公共类AppManager{
公共字符串[]GetAppSets()=>Registry.LocalMachine
OpenSubKey(@“SOFTWARE\Autodesk\AutoCAD”,false)
?。GetSubKeyNames()
}
此外,我对GetAppSets方法进行了测试:
[test]
公共无效GetAppSets_Returns_ValidValue(){
<div>常量字符串子项=@“SOFTWARE\Autodesk\AutoCAD”
/*基于
的应用程序集
*AutoCAD 2009-2017.*/
string[]fakeSets=new[]{“R17.2”、“R18.0”},
“R18.1”、“R18.2”、“R19.0”、“R19-1”、“R20.0”和
“R20.1”、“R21.0”}
RegistryKey rk=Mock.Create
()
模拟。排列(()=>rk.GetSubKeyNames())。返回(
fakeSets)
模拟。排列(()=>Registry.LocalMachine.OpenSubKey
(子键,false))。返回(rk)
AppManager:appMng=new-AppManager()
字符串[]appSets=appMng.GetAppSets()
断言。AreEqual(伪造集、应用集)
}

此测试工作成功
但如果GetAppSets方法使用“
软件\Autodesk\AutoCAD
”或“
Software\Autodesk\AutoCAD
”,而不是“
”字符串,则此测试将失败:如果更改字符串大小写,appSets变量将为空(
,因为我的计算机上不存在该注册表项。

因此,在这种情况下,
测试人员需要知道GetAppSets方法实现(
坏的变体,
)或
来处理不区分大小写的字符串等参数
是否可以使用第二种变体

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
11
发表于 2016-8-12 05:50:07 | 显示全部楼层
今天我从Telerik团队得到了答案:是的,您可以使用Arg.Matches机制灵活使用我们的匹配器。有关更多信息,您可以查看这篇博文-在JustMock Arrangements中处理参数,更具体地说-最后一段-使用Lambdas进行参数匹配。在您的情况下,我想这将完成这项工作Mock.Arrange (() => Registry.LocalMachine.OpenSubKey(Arg.Matches(s=>s.ToLower () == subkey.ToLower()),false))。返回(rk);。
致意,SvetlozarTelerik by Process。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 16:45 , Processed in 0.346855 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表