问题标签 [pex-and-moles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
894 浏览

moles - 该进程无法访问该文件,因为它正被另一个进程使用

我问这个问题是因为它是特定于痣的。在 Windows 7 64bit 上运行 VS2010,痣的 VsHost 停留在任务管理器中,导致此消息:

无法复制文件 该进程无法访问该文件,因为它正被另一个进程使用

解决方法:在任务管理器中杀掉进程Microsoft.Moles.VsHost.x86.exe

经常这样做是非常非常烦人的。我在 msdn 社交论坛上读到,这个问题将在某个时候得到解决(我记得帖子是 2010 年的,但找不到帖子)。

几乎每次我停止测试调试或调试时出现错误时都会发生这种情况。

关于这个问题有什么新的吗?

我非常希望 Moles 有朝一日会成为 Visual Studio 的标准部分,因为我非常喜欢这种 Typemocking!

0 投票
2 回答
665 浏览

c# - 在 EntityFramework 4.1 中查询数据库时如何使用 Moles 来破坏 DbContext?

我正在使用 Entity Framework 4.1 进行数据库访问,并希望对以下代码进行单元测试:

我正在使用 Moles 来消除数据库依赖关系,但是我被卡住了。我应该开始研究实体框架中的哪一点。

我正在关注这个示例,但它适用于 LINQ-To-SQL。

我还在考虑调试/跟踪实体框架,以确定在调用数据库之前要拦截哪个函数。但是,似乎没有可供 Entity Framework 4.1 跟踪的源代码。见讨论

谁能指导我应该在 DbContext 中删除哪些功能,以便我可以获取 EmployeeProfiles 列表?

0 投票
1 回答
665 浏览

moles - 使用 Moles 语法帮助使用泛型测试私有方法

我有一个看起来像这样的方法的签名:private IEnumerable BuildCustomerUpdatePlan(List localCacheChangedCustomers, List crmChangedCustomers){}

当我查看 moled 对象时,如何调用方法和测试的语法 (IntelliSense) 让我非常困惑,每次试一试时,我都会遇到编译错误。我浏览了 MSFT 网站上提供的基本教程,但我根本不知道如何使用 Moles 测试私有方法或如何处理返回类型和多个参数。

不幸的是,我一直找不到其他好的 HOWTO 或线程来演示比仅使用吐出 INT 并接受 INT 的简单 Add() 方法更复杂的示例。:(

尖端?

0 投票
0 回答
143 浏览

moles - Moles Generation - 不同名称空间中的相同类名

这个问题最初是在这里提出的:http ://social.msdn.microsoft.com/Forums/en-US/pex/thread/60972f1f-735a-474e-be84-40cda8006ffa?prof=required 。

我最近为 VS2010 安装了 Moles。我有具有相同类(相同名称)但在不同命名空间下的程序集。Moles 通过为这些类生成例如 MClassName 和 MClassName01 来解决这个问题。这在本地工作得很好。但是当其他人获得最新版本时,会重新生成痣,MClassName 变成 MClassName01,MClassName01 变成 MClassName,因此构建失败,直到所有单元测试再次修复。每次有人获得最新版本时,这是不可接受的。请提出解决方案。

当时的答案是,这是一个已知的错误,将在 2010 年 12 月的版本中修复。我仍然在 0.94.51023.0 中看到这个问题。这是回归还是错误从未修复?

谢谢

0 投票
1 回答
369 浏览

.net - 构建服务器上的痣和存根

我试图让我们的团队主要使用 Moles 和 Stubs 来去除静态类。我需要知道的一件事是我是否必须使用构建服务器上的安装程序安装 moles 和 stubs?或者我可以只用我的代码部署依赖项,以便在我的构建服务器上运行被淘汰的测试吗?

谢谢!

0 投票
1 回答
1634 浏览

c# - 如何告诉 Pex 不要存根具有具体实现的抽象类

我正在尝试使用 Pex 来测试一些代码。我有一个具有四个具体实现的抽象类。我为四种具体类型中的每一种创建了工厂方法。我还为抽象类型创建了一个,除了这个不错的线程解释说,Pex 不会使用抽象工厂方法,也不应该使用。

问题是我的一些代码依赖于全部存在的四种具体类型(因为创建更多子类的可能性非常非常小),但是 Pex 通过使用 Moles 创建存根来破坏代码。

如何强制 Pex 使用一种工厂方法(任何一种,我都不关心)来创建抽象类的实例,而无需为该抽象类创建 Moles 存根?是否有一个PexAssume指令可以做到这一点?请注意,一些具体类型形成了一种树结构类型,所以说ConcreteImplementation派生自AbstractClass,并且ConcreteImplementation有两个类型的属性AbstractClass。我需要确保树中的任何地方都没有使用存根。(并不是所有的具体实现都有AbstractClass属性。)

编辑:

看来我需要添加一些关于类结构本身如何工作的更多信息,但请记住,目标仍然是如何让 Pex 不存根类。

这里是抽象基类的简化版本及其四个具体实现。

我要测试的核心是Distill方法,正如您所看到的,它有可能递归运行。因为在这个范式中存根AbstractClass是没有意义的,它破坏了算法逻辑。即使尝试测试存根类也有些无用,因为除了抛出异常或假装它是Implementation1. 我宁愿不必以这种方式重写被测代码以适应特定的测试框架,但是以永远不会存根的方式编写测试本身AbstractClass是我在这里尝试做的。

例如,我希望我正在做的事情与类型安全的枚举构造有何不同。另外,我匿名发布了这里的对象(如你所知),并且我没有包括所有方法,所以如果你要评论告诉我这Implementation4.Equals(Implementation4)是坏的,别担心,我知道它是这里坏了,但我的实际代码解决了这个问题。

另一个编辑:

这是其中一个工厂类的示例。它位于 Pex 生成的测试项目的工厂目录中。

在我的这些具体实现的工厂方法中,可以使用任何构造函数来创建具体实现。在示例中,useEmptyConstructor参数控制要使用的构造函数。其他工厂方法具有类似的功能。我记得读过,虽然我不能立即找到链接,但这些工厂方法应该允许在每个可能的配置中创建对象。

0 投票
1 回答
217 浏览

pex - PexChoose 非泛型方法

有没有办法在运行时指定 PexChoose 的返回类型?例如 PexChoose.Value(name, Type)?

这对于制作根据运行时约束生成不同类型值的通用模型很有用。

0 投票
1 回答
747 浏览

.net - 使用带有静态变量的 Microsoft Moles

我有以下代码

在这段代码中,我想模拟 SampleClass 的 GetString 方法的行为。但是,当我为此编写痣时,代码会抛出异常,说静态初始化中发生了一些错误。我无法在这里解决问题。错误信息:

我的疑问是,如果我采用了该方法,那么为什么要创建数据库?谁能告诉我这里有什么问题?谢谢阿什瓦尼

0 投票
0 回答
385 浏览

sharepoint-2010 - 为什么 Moles 选择了用于 .NET v4.0 的 SharePoint.Behaviors,而其余的都是 v3.5?

作为更大的 SP 2010 沙盒解决方案的一部分,我有一个访问 SharePoint 2010 对象模型的 ClassLibrary。所有项目都针对 .NET v3.5(不是客户端配置文件)。然后是用于测试 ClassLibrary 的 ASP.NET WebApplication 项目 - 仍然是 .NET v3.5。

我正在尝试使用 Microsoft Moles 来模拟 SPContext.Current - 我已经知道并使用过 - 我遇到了这个问题:在每次构建时,moles 框架总是会Microsoft.SharePoint.Behaviors按顺序选择运行时 v4.0.30319 的 DLL将其复制到 MolesAssemblies 中。相反,Microsoft.SharePoint.Moles它选择了 v2.0.50727。

顺便说一下,这些只是C:\Program Files\Microsoft Moles\MolesAssemblies\Microsoft.SharePoint\14.0.0.0__71e9bce111e9429c. 但我记得在 Moles 安装过程中创建了 v4.0 和 v3.5 的 moles。

有没有办法告诉Moles 为运行时 v3.5 构建和/或复制 DLL?或者我应该在一个特殊的地方建造和存放它们,以便让鼹鼠捡起它们?

不知何故,我还查看了在 build( ...\obj\Debug\Moles\moles.args) 期间创建的临时选项文件,最后一个选项实际上是/clrversion:v2.0.50727 /clrversion2 /targetframeworkversion:v3.5.

环境:Windows 7 64 位,VS 2010 SP1,Moles v0.94.51023.0 - .NET v4.0.30319(仅安装 Moles,无 Pex)。

0 投票
1 回答
365 浏览

asp.net-mvc-3 - Pex 和 Moles 与 MVC 3?

我想知道是否有人对花费大量(任何?)时间获取和使用 Pex 和 Moles 是否值得有意见,特别是对于 MVC 3 项目?

我找到了这个链接

  1. Pex/Moles 是否与 MVC 一起使用?任何人有任何使用 MVC 3 的积极经验吗?

  2. 我应该等到 Moles 的下一个版本(11 月)再尝试获取它吗?