Tag: moq 3

如何使用Moq模拟ILogger / ILoggerService

我正在为View Model类编写一些unit testing。 该类的构造函数注入ILoggerService。 该接口定义了一个返回ILogger的方法GetLog。 类似下面的东西, 它代表一个实现ILoggable的类: – protected ViewModelBase(ILoggerService loggerService) { Logger = loggerService.GetLog(this); } 我正在尝试unit testing我的CreateNewOrder方法,如下所示: private void CreateNewOrder(INewOrderViewModel newOrderViewModel) { Logger.Log(“Sending Create New Order Message”, LogCategory.Info); var createNewOrderMessage = new OrderMessage(newOrderViewModel); _eventAggregator.GetEvent().Publish(createNewOrderMessage); } 我将如何模拟ILoggerService以便返回有效的Logger? 目前我的Unit测试抛出NullReferenceExeception。 我正在用Moq做我的嘲笑。 我想象我需要做一些事情 var loggerService = new Mock(); loggerService.Setup(svc => svc.GetLog(??)) 但是,如果不让我的测试类实现ILoggable,我无法看到。 提前致谢。

使用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 ); […]

AutoFoture与AutoMoq和具体对象注入

我遇到了一个与AutoFixture和AutoMoqCustomization相关的奇怪问题,以及它如何处理具体类的自动锁定。 我怀疑我没有很好地使用它,但想知道问题是什么。 首先是她的一些背景。 假设我有一个我想测试的课程: public class IdentityApplicationService { public IdentityApplicationService( TenantProvisioningService tenantProvisioningService) { // guard clause etc. _tenantProvisioningService = tenantProvisioningService; } } 及其依赖类TenantProvisioningService (TenantProvisioningService的依赖项在这里不相关,因为它们将被自动模拟,我不关心我的测试): public class TenantProvisioningService { readonly IRoleRepository _roleRepository; readonly ITenantRepository _tenantRepository; readonly IUserRepository _userRepository; public TenantProvisioningService( ITenantRepository tenantRepository, IUserRepository userRepository, IRoleRepository roleRepository) { this._roleRepository = roleRepository; this._tenantRepository = tenantRepository; this._userRepository = userRepository; […]