1

在 Isolator 中是否可以为(只读)属性返回非硬编码值?

如果不将伪造的对象替换为具体类的新实例,该实例具有明确定义为所需行为的属性(然后可能需要引用测试方法来访问所需的数据),这似乎是不可能的?

    public class MyClass
    {
        public int Number { get; private set; }
    }

    [Test]
    public void TestPropertyGetter_ReturningNonHardCodedValuesIsolator()
    {
        var fake = new MyClass();
        var x = 0;
        Isolate.WhenCalled(() => fake.Number).WillReturn(x);
        x++;

        Assert.AreEqual(1, fake.Number);
    }

理想情况下,我正在寻找一个与 MOQ 语法等效的简单 1 班轮。

    fake.SetupGet(x => x.Number).Returns(() => x);
4

1 回答 1

4

我的名字是 Nofar,来自 Typemock 的支持团队。

当您使用 WillReturn API 时,您将获得与编写 willReturn 短语时相同的“x”值。所以,在这句话之后改变它的价值是不相关的。

对于这种情况,您可以使用 DoInstead API,如下所示:

    [TestMethod]
    public void TestPropertyGetter_ReturningNonHardCodedValuesIsolator()
    {
        var fake = new MyClass();
        var x = 0;
        Isolate.WhenCalled(() => fake.Number).DoInstead(y =>
                                                            {
                                                                return x;
                                                            });
        x++;

        Assert.AreEqual(1, fake.Number);
    }
}

请问您要测试的是什么?

问候,

诺法尔

类型模拟支持

单元测试公司

于 2012-12-25T13:01:09.443 回答