Questions tagged «moq»

Moq是用于.NET的强类型和简约模拟框架。

2
Moq中Verifiable()的目的是什么?
目的是Verifiable()什么? 如果我验证了Mock并将其遗漏,它仍会验证SetUp。 编辑:VerifyAll()因此,我正在使用一切被验证的原因。更改为Verify()仅.Verifiable() SetUp检查了我的。
125 moq 


3
我该如何在签名中具有可选参数而不显式指定它或使用重载的方法?
给定以下界面: public interface IFoo { bool Foo(string a, bool b = false); } 尝试使用Moq模拟它: var mock = new Mock<IFoo>(); mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false); 在编译时给出以下错误: 表达式树可能不包含使用可选参数的调用或调用 我发现上述问题是Moq问题列表中的增强功能,并且似乎已分配给4.5版本(无论何时)。 我的问题是:鉴于上述情况不会很快得到解决,该怎么办?我的选择是只在每次模拟它时都显式设置可选参数的默认值(这种设置会破坏首先指定一个参数的目的)或创建没有布尔值的重载(就像我会做的那样)在C#4之前)? 还是有人遇到了更聪明的方法来克服这个问题?
119 c#  unit-testing  moq 


1
Moq:在不可重写成员上的无效设置:x => x.GetByTitle(“ asdf”)
不确定如何解决此问题,尝试对方法“ GetByTitle”进行单元测试 这是我的定义: public class ArticleDAO : GenericNHibernateDAO(IArticle, int>, IArticleDAO { public IArticle GetByTitle(string title) { IQuery query = Session.CreateQuery("...") return query.UniqueResult<IArticle>(); } } public interface IArticleDAO { IArticle GetByTitle(string title); } 单元测试: [Test] public void can_load_by_title() { _mockDaoFactory.Setup(x => x.GetArticleDao()) .Returns(_mockArticleDao.Object); _mockArticleDao.Setup(x => x.GetByTitle("some title")) .Returns(article1.Object); _articleManager.LoadArticle("some title"); Assert.IsNotNull(_articleManager.Article); …
111 c#  nhibernate  nunit  resharper  moq 

21
在单元测试中模拟HttpClient
我在尝试包装要在单元测试中使用的代码时遇到一些问题。问题是这样的。我有接口IHttpHandler: public interface IHttpHandler { HttpClient client { get; } } 和使用它的类,HttpHandler: public class HttpHandler : IHttpHandler { public HttpClient client { get { return new HttpClient(); } } } 然后是Connection类,该类使用simpleIOC注入客户端实现: public class Connection { private IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { _httpClient = httpClient; } } 然后我有一个具有此类的单元测试项目: private IHttpHandler …
110 c#  unit-testing  moq 

5
如何使用Moq在ASP.NET MVC中模拟HttpContext?
[TestMethod] public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist() { var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); context .Setup(c => c.Request) .Returns(request.Object); HomeController controller = new HomeController(); controller.HttpContext = context; //Here I am getting an error (read only). ... } 我的基本控制器重写了初始化此请求上下文的初始化。我正在努力做到这一点,但我做的事情不正确。 protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); } 在哪里可以获取有关使用Moq模拟我的RequestContext和HttpContext的更多信息?我正在尝试模拟cookie和一般上下文。

5
您能帮我了解Moq回调吗?
使用Moq进行了研究,Callback但我无法找到一个简单的示例来了解如何使用它。 您是否有一个小的工作片段,清楚地说明了如何以及何时使用它?
95 .net  moq 

2
Moq,SetupGet,模拟属性
我正在尝试模拟一个名为的类,该类UserInputEntity包含一个名为的属性ColumnNames(它确实包含其他属性,我只是将其简化为问题) namespace CsvImporter.Entity { public interface IUserInputEntity { List<String> ColumnNames { get; set; } } public class UserInputEntity : IUserInputEntity { public UserInputEntity(List<String> columnNameInputs) { ColumnNames = columnNameInputs; } public List<String> ColumnNames { get; set; } } } 我有一个主持人班: namespace CsvImporter.UserInterface { public interface IMainPresenterHelper { //... } public class …
94 c#  c#-4.0  properties  moq 

2
当构造函数有参数时用Moq模拟对象
我有一个要尝试使用最小起订量模拟的对象。对象的构造函数具有必需的参数: public class CustomerSyncEngine { public CustomerSyncEngine(ILoggingProvider loggingProvider, ICrmProvider crmProvider, ICacheProvider cacheProvider) { ... } } 现在,我正在尝试使用moq的v3“设置”或v4“ Mock.Of”语法为此对象创建模拟,但无法弄清楚……我尝试的所有操作均未通过验证。这是我到目前为止的内容,但是最后一行是给我一个真实的对象,而不是模拟对象。我这样做的原因是因为我要验证的CustomerSyncEngine上有一些方法正在被调用... // setup var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists); var mockCache = Mock.Of<ICacheProvider>(x => x.GetPickLists() == cachePickLists); var mockLogger = Mock.Of<ILoggingProvider>(); // need to mock the following, not create a real …
92 moq 

3
如何使用Moq框架模拟ModelState.IsValid?
我正在检 ModelState.IsValid入创建这样的Employee的控制器操作方法: [HttpPost] public virtual ActionResult Create(EmployeeForm employeeForm) { if (this.ModelState.IsValid) { IEmployee employee = this._uiFactoryInstance.Map(employeeForm); employee.Save(); } // Etc. } 我想使用Moq Framework在我的单元测试方法中模拟它。我试图这样模拟它: var modelState = new Mock<ModelStateDictionary>(); modelState.Setup(m => m.IsValid).Returns(true); 但这在我的单元测试用例中引发了异常。有谁可以帮我离开这里吗?

6
如何使用Moq模拟扩展方法?
我正在编写一个依赖于扩展方法结果的测试,但是我不希望该扩展方法的将来失败会破坏该测试。模拟该结果似乎是显而易见的选择,但是Moq似乎没有提供重写静态方法(扩展方法的要求)的方法。Moq.Protected和Moq.Stub也有类似的想法,但是在这种情况下他们似乎没有提供任何帮助。我是否缺少某些东西,还是应该以其他方式处理? 这是一个简单的示例,但失败了,并出现了常见的“对不可覆盖成员的无效期望”。这是一个需要模拟扩展方法的糟糕示例,但应该这样做。 public class SomeType { int Id { get; set; } } var ListMock = new Mock<List<SomeType>>(); ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 }); 至于可能建议我使用隔离器的所有TypeMock迷:我很感谢所做的努力,因为看起来TypeMock可以蒙住眼睛和使人兴奋,但我们的预算不会很快增加。

1
Moq用对象参数验证
我正在尝试验证作为类的参数。被测试的代码很好。该错误正在测试中。 我尝试了两种方法,但都失败了。 这是我的尝试: 1: this.MockImageResizeFilter.Verify(m => m.Filter(this.UploadedFileData, new ImageFilterOptions() { Width = 256, Height = 256, })); 即使作为第二个参数传递的对象具有相同的属性,这始终会失败。第一个参数已通过验证。 2: this.MockImageResizeFilter.Setup(m => m.Filter(It.IsAny<byte[]>(), It.IsAny<ImageFilterOptions>())) .Callback<byte[], ImageFilterOptions>((data, options) => { Assert.AreEqual(this.UploadedFileData, data, "data"); Assert.AreEqual(filterOptions.Width, options.Width, "Width"); Assert.AreEqual(filterOptions.Height, options.Height, "Height"); } ); 即使它应该失败,也总是通过。回调中的Asserts确实会失败,但是不会将异常传递给外部上下文,因此测试始终会通过。 您能帮我找出我做错了什么吗?
86 c#  .net  unit-testing  moq 

14
在需要进行模拟和单元测试时,如何抛出SqlException?
我正在尝试测试项目中的一些异常,而我捕获的异常之一是SQlException。 看来您不能走,new SqlException()所以我不确定如何抛出异常,尤其是在不以某种方式调用数据库的情况下(由于这些是单元测试,通常建议不要调用数据库,因为它很慢)。 我正在使用NUnit和Moq,但不确定如何伪造。 在回答似乎全部基于ADO.NET的某些答案时,请注意我正在使用Linq to Sql。这样的东西就像在幕后。 @MattHamilton要求的更多信息: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class. at Moq.Mock`1.CheckParameters() at Moq.Mock`1..ctor(MockBehavior behavior, Object[] args) at Moq.Mock`1..ctor(MockBehavior behavior) at Moq.Mock`1..ctor() 尝试制作模型时发布到第一行 var ex = new Mock<System.Data.SqlClient.SqlException>(); ex.SetupGet(e => e.Message).Returns("Exception message");

5
如何起订索引财产
我正在尝试模拟对索引属性的调用。即,我想起以下几点: object result = myDictionaryCollection["SomeKeyValue"]; 还有二传手的价值 myDictionaryCollection["SomeKeyValue"] = myNewValue; 我这样做是因为我需要模拟应用程序使用的类的功能。 有谁知道如何用起订量做到这一点?我尝试了以下方面的变体: Dictionary<string, object> MyContainer = new Dictionary<string, object>(); mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]); 但这不能编译。 最小起订量是我想要实现的目标吗,有人能举例说明吗?
81 c#  tdd  mocking  moq 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.