是微软创建的一个隔离框架。Moles的一个很酷的特性是它可以“模拟”静态/非虚方法和密封类(这在像Moq这样的框架中是不可能的)。下面是Moles能做什么的快速演示:
Assert.AreNotEqual(new DateTime(2012, 1, 1), DateTime.Now);
// MDateTime is part of Moles; the below will "override" DateTime.Now's behavior
MDateTime.NowGet = () => new DateTime(2012, 1, 1);
Assert.
在MS中,它使用密封类和只读属性返回一些对象(我只能假设使用内部构造函数或内部属性集)。这些家伙不能继承我可以使用的界面。显然,如果我控制了这段代码,我会有更多的控制,但是因为它在底层的MS Dynamic框架中,我有点卡住了。
我想要模拟/重写的类称为。我之所以要嘲笑它,是因为我试图模拟一个对dynamics的调用,并想假装我得到了一些别名值。
这里是一个场景,我想要创建一个示例实体,Dynamic将返回.就像这样:
var new_entity = new Entity("new_entity")
{
Attributes = new Attribu
我有一个问题,那就是我不能模拟有ref参数的方法。我想模拟的方法的签名如下所示:
class ContractRepository
...
public long GetValueAndIncrement(ref Counter counter)
{
...
}
我试着这样模拟它:
Random myRandomizer = new Random();
var contractRepo = new SIContractRepository();
contractRepo.GetValueAndIncrementCounterRef = ((internalCounter) => Int
我有需要在没有changing.Some部件的情况下进行单元测试的遗留代码,我使用的是Rhinomock,我被困在如何创建静态类的模拟中,并验证it.Here上的任何期望是示例代码:
public static class BadGuy
{
private static event Badevent;
}
public class GoodGuy
{
public GoodGuy()
{
BadGuy.Badevent += GoodGuyBadluck;
}
private GoodGuyBadluck()
{
我在其中一个单元测试项目(VS 2010单元测试)中使用(x86)版本0.94.51023.0。为了测试应用程序中的数据访问层方法,我尝试为System.Data.dll添加moles程序集,以便能够模拟SqlConnection & SqlCommand对象。当我在添加moles程序集时生成单元测试时,生成失败,包含以下错误详细信息
error CS0234: The type or namespace name 'SqlCredential' does not exist in the namespace 'System.Data.SqlClient'
我正在尝试模拟SearchResultCollection类。但是,当我尝试拦截对PropertiesLoaded getter的调用时,我的测试抛出了一个异常:
System.NotSupportedException: Invalid setup on a non-virtual (overridable in VB) member: x => x.PropertiesLoaded
我的代码:
Mock<SearchResultCollection> searchResultMock = new Mock<SearchResultCollection>();
我确实在论坛上搜索过,没有发现类似的问题。我希望对我们选择的模拟框架做出最终决定,并将其作为最佳实践--我已经决定使用Moq……直到我最近才发现,微软终于创建了一个名为Moles的模拟框架,它的工作原理似乎类似于TypeMock,通过分析器、API、sexyness等。
有一百万个“NMock vs Moq vs TypeMock vs Rhino...”线在这里。但是我从来没有见过Moles involved.In事实,直到不久前我才知道它是否存在。有人在用它吗?在生产中?有人为了它抛弃了他们的旧的模仿框架,如果是这样的话,是哪一个?它与你使用过的模仿框架相比如何?
谢谢..另外,我们正在使
我正在尝试使用Moles来模拟System.Net.Sockets中的Socket类。我已经成功地生成了.moles文件,并且构建它确实将一个System.Net.Moles程序集添加到了我的引用中,但是它没有生成MSocket类。实际上,只生成了MIPEndPointCollection类。
下面是一个使用System.Net.Sockets.Socket的示例类:
using System.Text;
using System.Net.Sockets;
namespace MyProject
{
public static class Communicator
{