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

安德烈·布什曼

NUnit 3.4.1,JustMock 2016.2.713.2

我正在测试课程:

public class AppManager {
    public string[] GetAppSets() => Registry.LocalMachine
        .OpenSubKey(@"SOFTWARE\Autodesk\AutoCAD", false)
        ?.GetSubKeyNames();
}

另外,我对GetAppSets方法进行测试

[Test]
public void GetAppSets_Returns_ValidValue() {

    const string subkey = @"SOFTWARE\Autodesk\AutoCAD";
    /* The sets of applications which are based on 
     * 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<RegistryKey>();

    Mock.Arrange(() => rk.GetSubKeyNames()).Returns(
        fakeSets);

    Mock.Arrange(() => Registry.LocalMachine.OpenSubKey
    (subkey, false)).Returns(rk);

    AppManager appMng = new AppManager();
    string[] appSets = appMng.GetAppSets();

    Assert.AreEqual(fakeSets, appSets);
}

有用。但是,如果GetAppSets方法使用“ Software \ Autodesk \ AutoCAD ”或“ software \ autodesk \ autocad ”字符串而不是“ S OFTWARE \ Autodesk \ AutoCAD字符串,则我的测试将失败:该appSets变量将是null如果更改字符串大小写(因为该注册表密钥在我的计算机上不存在)。

因此,在这种情况下测试人员要么需要知道GetAppSets方法的实现(错误的变体),要么需要处理不区分大小写的字符串之类的参数

是否可以使用第二种形式?

斯特凡·德拉格涅夫(Stefan Dragnev)

@Karolis的答案似乎没有解决问题的重点。

正确的解决方案是在安排中使用匹配器以不区分大小写的方式匹配密钥:

    var mock = Mock.Create<RegistryKey>();
    Mock.Arrange(() => Registry.LocalMachine.OpenSubKey(
        Arg.Matches<string>(s => StringComparer.OrdinalIgnoreCase.Equals(s, @"SOFTWARE\Autodesk\AutoCAD")),
        Arg.AnyBool)
    ).Returns(mock);


    var mockKey = Registry.LocalMachine.OpenSubKey(@"software\autodesk\autocad", false);

上面mockKey的实例与实例相同mock,因为第一个参数上的参数匹配器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

我们可以检查字符串是否包含在另一个不区分大小写的字符串中吗?

来自分类Dev

我可以使用Order By和ToLower在DocumentDB上执行不区分大小写的字符串排序吗?

来自分类Dev

可以创建不区分大小写的字符串类吗?

来自分类Dev

vuex ORM中的'where'子句是否可以不区分大小写的字符串比较?

来自分类Dev

不区分大小写的排序集-区分大小写保留相同的字符串

来自分类Dev

字符串不区分大小写的模式匹配

来自分类Dev

如何使字符串不区分大小写

来自分类Dev

不区分大小写的字符串数组比较

来自分类Dev

如何使字符串比较不区分大小写?

来自分类Dev

不区分大小写的字符串数组排序

来自分类Dev

不区分大小写比较字符串

来自分类Dev

如何使字符串替换不区分大小写

来自分类Dev

regEx包装不区分大小写的字符串

来自分类Dev

不区分大小写的字符串数组比较

来自分类Dev

不区分大小写的拆分字符串

来自分类Dev

不区分大小写的bash字符串替换

来自分类Dev

内置不区分大小写的字符串=

来自分类Dev

我需要在字符串中搜索一个单词,如何使其不区分大小写?

来自分类Dev

Active Directory GUID字符串可以区分大小写吗?

来自分类Dev

从JavaScript中的字符串中替换数组中的值,不区分大小写

来自分类Dev

字符串区分大小写

来自分类Dev

在MySQL中不区分大小写地排序字符串

来自分类Dev

C ++中不区分大小写的标准字符串比较

来自分类Dev

不带锚点的Java中不区分大小写的字符串匹配

来自分类Dev

Go中不区分大小写的字符串比较

来自分类Dev

Elasticsearch中的意外字符串排序(不区分大小写)

来自分类Dev

Golang中不区分大小写的字符串搜索

来自分类Dev

向不区分大小写的RegExp中开始替换的东西添加字符串。

Related 相关文章

  1. 1

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

  2. 2

    我们可以检查字符串是否包含在另一个不区分大小写的字符串中吗?

  3. 3

    我可以使用Order By和ToLower在DocumentDB上执行不区分大小写的字符串排序吗?

  4. 4

    可以创建不区分大小写的字符串类吗?

  5. 5

    vuex ORM中的'where'子句是否可以不区分大小写的字符串比较?

  6. 6

    不区分大小写的排序集-区分大小写保留相同的字符串

  7. 7

    字符串不区分大小写的模式匹配

  8. 8

    如何使字符串不区分大小写

  9. 9

    不区分大小写的字符串数组比较

  10. 10

    如何使字符串比较不区分大小写?

  11. 11

    不区分大小写的字符串数组排序

  12. 12

    不区分大小写比较字符串

  13. 13

    如何使字符串替换不区分大小写

  14. 14

    regEx包装不区分大小写的字符串

  15. 15

    不区分大小写的字符串数组比较

  16. 16

    不区分大小写的拆分字符串

  17. 17

    不区分大小写的bash字符串替换

  18. 18

    内置不区分大小写的字符串=

  19. 19

    我需要在字符串中搜索一个单词,如何使其不区分大小写?

  20. 20

    Active Directory GUID字符串可以区分大小写吗?

  21. 21

    从JavaScript中的字符串中替换数组中的值,不区分大小写

  22. 22

    字符串区分大小写

  23. 23

    在MySQL中不区分大小写地排序字符串

  24. 24

    C ++中不区分大小写的标准字符串比较

  25. 25

    不带锚点的Java中不区分大小写的字符串匹配

  26. 26

    Go中不区分大小写的字符串比较

  27. 27

    Elasticsearch中的意外字符串排序(不区分大小写)

  28. 28

    Golang中不区分大小写的字符串搜索

  29. 29

    向不区分大小写的RegExp中开始替换的东西添加字符串。

热门标签

归档