Tag: mocking

AutoMockContainer,支持具有非接口依赖性的自动锁定类

我有一个具有非接口依赖的构造函数: public MainWindowViewModel(IWorkItemProvider workItemProvider, WeekNavigatorViewModel weekNavigator) 我正在使用Moq.Contrib automockcontainer。 如果我尝试自动锁定MainWindowViewModel类,由于WeekNavigatorViewModel依赖项,我收到错误。 是否有任何automocking容器支持非接口类型的模拟? 正如马克在下面所示; 是的你可以! :-)我将Moq.Contrib AutoMockContainer替换为Mark在他的答案中提出的东西,唯一的区别是自动生成的模拟被注册为单例,但你可以使这个可配置。 这是最终的解决方案: /// /// Auto-mocking factory that can create an instance of the /// class under test and automatically inject mocks for all its dependencies. /// /// /// Mocks interface and class dependencies /// public class AutoMockContainer { readonly IContainer _container; public […]

使用Moqvalidation参考参数的值

我刚刚切换到Moq并遇到了问题。 我正在测试一个创建业务对象的新实例的方法,从用户输入值设置对象的属性,并调用方法(SaveCustomerContact)来保存新对象。 业务对象作为ref参数传递,因为它通过远程处理层。 我需要测试传递给SaveCustomerContact的对象是否按预期设置了所有属性,但由于它在控制器方法中被实例化为new,我似乎无法这样做。 public void AddContact() { var contact = new CustomerContact() { CustomerId = m_model.CustomerId }; contact.Name = m_model.CustomerContactName; contact.PhoneNumber = m_model.PhoneNumber; contact.FaxNumber = m_model.FaxNumber; contact.Email = m_model.Email; contact.ReceiveInvoiceFlag = m_model.ReceiveInvoiceFlag; contact.ReceiveStatementFlag = m_model.ReceiveStatementFlag; contact.ReceiveContractFlag = m_model.ReceiveContractFlag; contact.EmailFlag = m_model.EmailFlag; contact.FaxFlag = m_model.FaxFlag; contact.PostalMailFlag = m_model.PostalMailFlag; contact.CustomerLocationId = m_model.CustomerLocationId; RemotingHandler.SaveCustomerContact( ref contact ); […]

有没有人在.NET中成功模拟过Socket类?

我试图在C#中模拟出System.net.Sockets.Socket类 – 我尝试使用NUnit模拟但它不能模拟具体的类。 我也尝试过使用Rhino Mocks但它似乎使用了该类的真实版本,因为它在调用Send(byte [])时抛出了SocketException。 有没有人使用任何模拟框架成功创建和使用Socket模拟?

如何使用moq测试抽象类中的具体方法?

在过去,当我想模拟一个抽象类时,我只是在扩展抽象类的代码中创建一个模拟类,然后在我的unit testing中使用该类… public abstract class MyConverter : IValueConverter { public abstract Object Convert(…) { … }; public virtual Object ConvertBack(…) { … } } private sealed class MockedConverter : MyConverter { … } [TestMethod] public void TestMethod1() { var mock = new MockedConverter(); var expected = …; var actual = mock.ConvertBack(…); Assert.AreEqual(expected, actual); } 我想养成使用Moq的习惯。 […]

EF6 Mocking派生的DbSet

我正在尝试将新的模拟EF6应用到我现有的代码中。 我有一个扩展DbSet的类。 其中一个方法调用基类(BdSet)Create方法。 这是一个示例代码(不是完整的解决方案或真实姓名): public class DerivedDbSet : DbSet, IKeyValueDbSet, IOrderedQueryable where TEntity : class { public virtual bool Add(string value1, string value2) { var entity = Create(); // There is no direct implementation of the Create method it is calling the base method // Do something with the values this.Add(entity); return true; } } […]

为什么我们需要模拟框架?

我使用过编写过NUnit测试的代码。 但是,我从未使用过模拟框架。 这些是什么? 我理解dependency injection以及它如何帮助提高可测试性。 我的意思是所有依赖项都可以在unit testing时进行模拟。 但是,为什么我们需要模拟框架呢? 我们不能简单地创建模拟对象并提供依赖关系。 我在这里错过了什么吗? 谢谢。

异步方法返回null

如果我尝试模拟包含async方法的类型,例如: interface Foo { Task Bar(); } 然后mock的Bar方法返回null。 我猜Moq选择default(Task)作为我的方法的默认返回值,这确实是null 。 但是,Moq应该选择像Task.FromResult(default(int))这样的默认值。 我可以强制Moq使异步方法返回非空任务吗?

如何模拟Web服务

我是否必须重写我的代码才能在界面中执行此操作? 或者有更简单的方法吗? 我正在使用Moq

C#的非接口依赖模拟框架

我是嘲笑的新手,所以我可能在这里完全错了,但我相信大多数模拟框架都依赖于接口。 不幸的是,我们的大部分代码都没有使用接口。 前几天,我在Java中看到了一个Mocking框架,它重现了类\ object的字节代码,而不是调用它的内部方法,但你仍然可以测试它是否正在调用这些方法。 我的问题是:.Net有没有可以做类似事情的模拟框架? 我正在寻找一些免费的东西,我不想要一些需要虚拟或抽象方法的东西。

NUnit Mocking不适用于Singleton方法

忍受我,我是NUnit的新手。 我来自Rails之地,所以其中一些对我来说是新的。 我有一行代码如下: var code = WebSiteConfiguration.Instance.getCodeByCodeNameAndType(“CATALOG_Brands_MinQty”, item.Catalog); 我试图模仿它,就像这样(假设code已经初始化): var _websiteConfigurationMock = new DynamicMock(typeof(WebSiteConfiguration)); _websiteConfigurationMock.ExpectAndReturn(“getCodeByCodeNameAndType”, code); 当我调试测试时, getCodeByCodeNameAndType返回null ,而不是预期的code 。 我究竟做错了什么? NUnit版本:2.2.8