我一直在看Moq的文档,这些评论太短,我不能理解它可以做的每一件事情。 我没有得到的第一件事是It.IsAny<string>(). //example using string It.IsAny<string>(). //example using string 使用它只是为了增加一些价值吗? 如果你不关心价值,我知道人们会说这个,但是如果你不关心价值,那么你可以做“一”或什么东西? 这只是更多的打字。 其次,什么时候会是一个你不关心价值的例子? 我认为Moq需要价值来匹配东西。 我没有得到它。它是完全或如何使用它。 我不明白这个例子,它试图展示什么。 接下来,我不明白什么时候使用Times (及其AtMost方法和类似的)。 为什么要限制设置的次数? 我有一些AppConfig值,我需要使用两次。 为什么我想限制一次呢? 这只会使testing失败。 这是否阻止其他人添加另一个到您的代码或东西? 我没有得到如何使用mock.SetupAllProperties(); 它与什么build立属性? 我也不明白为什么有很多不同的方式来build立一个属性,以及它们有什么不同。 该文件有: SetupGet(of property) SetupGet<TProperty> 我注意到Moq中有很多东西显示()和<> – 它们之间有什么区别,它们看起来像在使用什么? 我也不明白为什么他们有SetupGet 。 你会不会使用SetupSet来设置属性? SetupSet有五种不同的方式在文档中使用它。 另外一个叫做SetupProperty 。 所以我不明白为什么有这么多。 在一个侧面说明,我想知道在lambda使用的variables是否独立于其他lambda。 例如: mock.setup(m => m.Test); stop.setup(m => m.Test); 这会好吗或者variablesm之间会有一些冲突吗? 最后,我正在看这个video ,我想知道它是否显示Visual Studio。 他的Intellisense看起来不一样。 一个灯泡popup了他(我很高兴我不这样做,因为它带回了netbeans痛苦的回忆),并且有从一个开放的支撑线到右支撑等行。 谢谢 […]
我正在开发一个Web API,而我想到的一个testing是,如果客户端使用物理testingID(物理testing是我正在寻找的资源)进行GET操作,并且没有find物理testing,Web API应该返回一个404状态。 现在,我为我的testing使用moq框架,我有以下代码: [TestMethod] public void then_if_physical_test_not_found_return_not_found_status() { var unitOfWork = new Mock<IUnitOfWork>(); var repository = new Mock<IRepository<PhysicalTest>>(); repository.Setup(r => r.FindById(It.IsAny<int>())).Returns(); unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object); var pt = new PhysicalTestResource(unitOfWork.Object); HttpResponseMessage<PhysicalTest> response = pt.GetPhysicalTest(43); Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode) } 我需要返回()方法返回一个空对象,这将是实际的API方法将返回,如果找不到资源。 我尝试在Returns()方法中将null作为参数发送,但没有成功。
我正在尝试validation是一个类的参数。 正在testing的代码是好的。 错误在testing中。 我试了两种方法,都失败了。 这是我的尝试: 1: this.MockImageResizeFilter.Verify(m => m.Filter(this.UploadedFileData, new ImageFilterOptions() { Width = 256, Height = 256, })); 这总是失败,即使作为第二个parameter passing的对象具有相同的属性。 第一个参数validation正确。 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"); } ); 这总是通过,即使它会失败。 callback中的断言确实失败,但是exception不会传递给外部上下文,因此testing总是通过。 你能帮我find我做错了什么吗?
我很新使用MOQ 。 我正在创build一些unit testing用例到HttpModule ,一切正常,直到我按照如下命中一个static属性 this.applicationPath = (HttpRuntime.AppDomainAppVirtualPath.Length > 1) ? HttpRuntime.AppDomainAppVirtualPath : String.Empty; 我不知道如何创build像HttpRuntime.AppDomainAppVirtualPath static类和属性的HttpRuntime.AppDomainAppVirtualPath 。 context , request和response已经被我从moq获得的示例代码模拟得很好。 如果有人能帮助我,我将不胜感激。
我试图嘲笑一个名为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; } } } 我有一个主持人class: namespace CsvImporter.UserInterface { public interface IMainPresenterHelper { //… } public class MainPresenterHelper:IMainPresenterHelper { //…. } public […]
为什么entity framework中没有IDbContext接口? 如果存在一个像SaveChanges()等方法的现有接口,那么从中派生自定义的数据库上下文接口会不会更容易? public interface ICustomDbContext : IDbContext { // add entity set properties to existing set of methods in IDbContext IDbSet<SomeEntity> SomeEntities { get; } }
我无法findMoq和Rhino的特定function对比。 所有的问题都是“你更喜欢哪个,为什么”,或者“这里是你如何在犀牛做一个简单的模拟,以及如何在moq中完成”。 我无法在任何地方find深度比较。 我意识到语法的差异,我不在寻找答案。 我正在寻找能力比较 。 例如: 犀牛有Expect.On()为线程嘲笑。 莫莫可以这样做吗? 怎么样多模拟(一个模拟实现多个接口)。 莫莫可以这样做吗? 我相信Moq现在可以嘲笑受保护的成员。 犀牛可以这样做吗? 编辑 :我最终也在看一些其他的.Net框架。
用Moq,是否有多个匹配参数? It.Is<string>() 在这个例子中,我希望mockMembershipService根据提供的用户返回不同的ProviderUserKey。 mockMembershipService.Setup( x => x.GetUser( It.Is<string>( s => s.Contains("Joe"))) .ProviderUserKey) .Returns("1234abcd"); mockMembershipService.Setup( x => x.GetUser( It.Is<string>( s => s.Contains("Tracy"))) .ProviderUserKey) .Returns("5678efgh"); SetUp默认为第二条语句,而不是根据自身的优点来评估每条语句。
MOQ的SetupGet()和Setup()方法有什么区别?
我对unit testing和嘲笑很新! 我试图写一些unit testing,涵盖了一些与数据存储交互的代码。 数据访问由IRepository封装: interface IRepository<T> { …. IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate); …. } 我正在尝试使用IRepository的具体IoC实现来testing的代码如下所示: public class SignupLogic { private Repository<Company> repo = new Repository<Company>(); public void AddNewCompany(Company toAdd) { Company existingCompany = this.repo.FindBy(c => c.Name == toAdd.Name).FirstOrDefault(); if(existingCompany != null) { throw new ArgumentException("Company already exists"); } repo.Add(Company); repo.Save(); } } 所以我testingSignupLogic.AddNewCompany()本身的逻辑,而不是逻辑和具体的存储库,我嘲笑IRepository并将其传递到SignupLogic。 嘲笑了仓库看起来像这样: […]