首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一接口的JustMock多个模块

同一接口的JustMock多个模块
EN

Stack Overflow用户
提问于 2018-09-13 14:34:22
回答 2查看 394关注 0票数 2

在我们的解决方案中,我们曾经有一个非常古老的版本的JustMock。我们编写了大约7000个测试,有时会出现的一个模式是为所有测试用例设置一个特定接口的默认模拟,并且在一些测试中“覆盖”默认的模拟。

这意味着,在几百个测试中,我们创建一个模拟并对其进行排列,然后创建另一个相同类型的模拟,并对其进行排序。然后我们会在第二次模拟中做出断言。

几个月前,我们更新到了当前版本,现在这些相同类型的多个模拟似乎不再起作用了。举下面的例子。我创建了两个相同类型的mock,并断言第二个mock被调用了一次。对于2012年版本的JustMock,这个测试失败了,但是最近的一个版本并没有失败。

那么,JustMock在做什么,这使我无法制造相同类型的多个模拟并在其上断言?它为什么要这么做?

代码语言:javascript
复制
public interface IFoo
{
    void Bar();
}
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        var bar = Mock.Create<IFoo>();
        Mock.Arrange(() => bar.Bar()).OccursOnce();

        var foo = Mock.Create<IFoo>();
        Mock.Arrange(() => foo.Bar()).OccursOnce();

        Mock.Assert(foo); // Succeeds in recent versions, fails in older versions as I would expect
        //Mock.Assert(bar); // Would fail as expected
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 08:54:05

实际上,这似乎是对以前版本的JustMock的一种回归。我已将此作为错误报告记录到JustMock反馈门户中。这是一个链接,如果您想订阅状态更新:当有多个具有未满足的预期的模拟时,模拟断言不会失败。JustMock 2019.1.115.2版本解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2018-11-09 15:23:45

我刚刚也遇到了同样的问题!您可以使用Telerik.JustMock.Helpers扩展来修复它:

代码语言:javascript
复制
var bar = Mock.Create<IFoo>();
bar.Arrange(x => x.Bar()).OccursOnce();

var foo = Mock.Create<IFoo>();
foo.Arrange(x => x.Bar()).OccursOnce();

现在,JustMock不会犯在闭包中查找错误实例的错误,因为您将它直接指定给表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52316030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档