我在哪里可以find全面的MOQ文件? 我刚刚开始嘲笑,难以得到我的头。 我已阅读http://code.google.com/p/moq/wiki/QuickStart上的所有链接,但似乎无法find教程或简单介绍。 我也简单地看过Rhino Mocks,但发现它很混乱。 是的 – 我读斯蒂芬·沃尔瑟斯的文章 – 非常有帮助。 我也通过链接。 我似乎无法在http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq观看video[断开链接] 具体来说,我试图确定一个事件是否是从嘲笑类中提出的。 我无法获得QuickStarts页面上的事件示例来编译。 在google组上,Daniel解释说CreateEventHandler只能处理EventHandlertypes的事件,但即使如此,我也无法获得编译的代码。 更具体地说,我有一个实现INotifyChanged的类。 public class Entity : INotifyChanged { public event PropertyChangingEventHandler PropertyChanging; public int Id { get {return _id;} set { _id = value; OnPropertyChanged("Id"); } } protected void OnPropertyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } 等….. […]
比方说,我想使用Moq在setter上创build一个callback函数,将set属性存储在我自己的字段中供以后使用。 (举个例子 – 但它到了问题的重点。)我可以做这样的事情: myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value); 这工作得很好。 但是,根据Intellisense,SetupSet已过时。 但是没有说什么应该作为替代。 我知道,moq提供的SetupProperty将自动装载属性与后台字段。 但那不是我要找的。 我想把设定值捕捉到我自己的variables中。 我应该如何使用非过时的方法来做到这一点?
我试图嘲笑一个索引属性的调用。 即我想moq以下内容: object result = myDictionaryCollection["SomeKeyValue"]; 也是制定者的价值 myDictionaryCollection["SomeKeyValue"] = myNewValue; 我这样做是因为我需要模拟我的应用程序使用的类的function。 有谁知道如何用最小起订量做到这一点? 我已经尝试了以下变体: Dictionary<string, object> MyContainer = new Dictionary<string, object>(); mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]); 但是这不能编译。 我试图用最小起订量来实现,有没有人有我可以做到这一点的任何例子?
我有一个方法返回类是我想要testing的类的依赖类的无效。 这个类是巨大的,我只用它从这个单一的方法。 我需要replacetesting的这个方法的实现,因为我希望它做一些不同的事情,我需要能够访问这个方法接收的参数。 我无法在EasyMock中find这种方法。 我想我知道如何使用doAnswer来处理doAnswer但除非绝对必要,否则我不想添加其他库。
我正在使用ASP.Net MVC 4 RC的ApiController,我试图unit testing一个Get方法。 这个方法使用HttpRequestMessage上的CreateResponse方法,但我不知道如何模拟这个或使其正常工作。 该方法的主体包含这个: MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType); var response = Request.CreateResponse<SmartBlock>(HttpStatusCode.OK, versionedSmartBlock, header); 在我的unit testing中,我创build了一个空的HttpRequestMessage: CallsController api = new CallsController(managerMock.Object, config, adapterFactoryMock.Object); api.Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/Initiate?ern=%2B44123456789"); var response = api.Get("+44123456789", null); 但它只是生成一个InvalidOperationException: 该请求没有关联的configuration对象,或者提供的configuration为空。 有没有人有任何关于如何configurationHttpRequestMessage,以便CreateResponse方法实际上它的工作的指针?
我如何validation一个方法被称为Moq一次? Verify()与Verifable()是非常混乱的。
模块A在其顶部包含import B 然而,在testing条件下,我想嘲笑 B (模拟AB ),完全避免导入B 实际上, B不是故意安装在testing环境中的。 A是被testing的单元。 我必须导入A的所有function。 B是我需要模拟的模块。 但是,如果A的第一个东西是导入B,我怎么能在A中模拟B,并停止A导入真实的B? (B没有安装的原因是我用pypy进行快速testing,不幸的是B还不兼容pypy。) 这怎么可能呢?
我在使用Moq的testing中有一些代码: public class Invoice { … public bool IsInFinancialYear(FinancialYearLookup financialYearLookup) { return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate; } … } 所以在unit testing中,我试图嘲笑这个方法,并使其返回true mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true); 有没有反正写这一行,所以我不必指定inputIsInFinancialYear 。 即。 所以它没有在代码中input参数是什么,它将返回真正的任何传递给它?
我一直在尝试使用Mockito来模拟一个使用可变参数的方法: interface A { B b(int x, int y, C… c); } A a = mock(A.class); B b = mock(B.class); when(ab(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, ab(1, 2)); 这不起作用,但是如果我这样做: when(ab(anyInt(), anyInt())).thenReturn(b); assertEquals(b, ab(1, 2)); 这样做是有效的,尽pipe在保留方法的时候我完全忽略了可变参数的参数。 任何线索?
这是我的理解,我可以testing,如果我调用更高级别的方法,将发生方法调用,即: public abstract class SomeClass() { public void SomeMehod() { SomeOtherMethod(); } internal abstract void SomeOtherMethod(); } 我想testing,如果我打电话SomeMethod()那么我期望SomeOtherMethod()将被调用。 我是否正确地认为这种testing在模拟框架中是可用的?