【问题标题】:Typemock Isolator - how to mock a property that returns a non-hard coded valueTypemock Isolator - 如何模拟返回非硬编码值的属性
【发布时间】:2012-12-24 04:43:02
【问题描述】:

是否可以在 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);

【问题讨论】:

    标签: typemock typemock-isolator


    【解决方案1】:

    我叫 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);
        }
    }
    

    请问您要测试的是什么?

    问候,

    远方

    Typemock 支持

    单元测试公司

    【讨论】:

    • 感谢您的快速回复。我喜欢这个产品!为了使其更直观,您是否考虑过创建一个接受 Func 参数的 WillReturn 重载? IE。类似于最小起订量。
    猜你喜欢
    • 2011-03-13
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多