如何将IReadOnlyCollection <bool>与List <bool>进行比较以获得相等的值?

时间:2018-01-02 22:35:13

标签: c#

我正在尝试编写一个单元测试来比较实际结果和预期结果,我测试的类给了我一个IReadOnlyCollection,我的预期结果是List。

我在How to compare Lists in Unit Testing阅读了有关使用CollectionAssert比较列表的答案,但是当我尝试这样做时,我得到编译器错误“无法从'System.Collections.Generic.IReadOnlyCollection'转换为'System。 Collections.ICollection'“

这是我的测试方法:

    [TestMethod]
    public void EveningMotion()
    {
        IDateTimeProvider dateTimeProvider = new MockDateTimeProvider(new DateTime(2018, 1, 1, 20, 0, 0));
        ILightHardwareInterface frontyardLights = new MockLightHardwareInterface();
        MockLightHardwareInterface backyardLights = new MockLightHardwareInterface();

        LightController controller = new LightController(dateTimeProvider, frontyardLights, backyardLights);
        controller.ActuateLights(true);

        IReadOnlyCollection<bool> actualResult = backyardLights.GetRecording();
        List<bool> expectedResult = new List<bool>
        {
            true
        };

        CollectionAssert.AreEqual(expectedResult, actualResult);
    }

该怎么办?我希望保持预期和实际的结果比较,而不是逐个元素地迭代,如果可能的话。

1 个答案:

答案 0 :(得分:1)

您可以将CollectionAssert用于集合。

CollectionAssert.AreEqual(expectedResult, actualResult);