Tag: autofixture

如何创建始终在AutoFixture中设置预定义值的类列表?

如何创建一个始终在AutoFixture中设置某个预定义值的类集合? Fixture.Register<IList>(() => Fixture.CreateMany().ToList()); 假设子类具有以下内容: public class Child { public int ParentId { get; set; } public int ChildId { get; set; } public string ChildName { get; set; } public int ChildValue { get; set; } } 如何确保匿名类始终具有相同的父ID,而所有其他属性可以是随机的? 我想将ChildId设置为0也是可取的,因为这些将被推送到存储库数据测试中的数据库中。

如何让AutoFixture AutoMoq从实例化对象中的注入服务返回结果?

我正在尝试测试消费者存储库服务的服务类。 我设置了自定义设置,我相信它应该与我的存储库服务一起使用,而是返回默认的匿名结果。 如果您查看下面的代码示例,我正在尝试获取我在定制类中注册的“Foo”对象,当我调用svc.GetFoos方法时,我什么也得不到: void Main() { var fixture = new Fixture().Customize( new CompositeCustomization( new Customization(), new AutoMoqCustomization())); var svc = fixture.CreateAnonymous(); Console.Write(svc.GetFoos().Count()); } // Define other methods and classes here public class Bar { public IQueryable GetFoos() { return _rep.Query(); } public Bar(IRepository rep) { _rep = rep; } private IRepository _rep; } public class […]

AutoFixture – 如何调用方法,如何设置autoproperty的私有setter?

这是我的class级: public MyClass { public int Id { get; private set; } public SetAssignableId (int id) { this.Id = id; } } 我想让AutoFixture通过SetAssignableId或私人设置器设置Id。

如何使用Moq和Autofixture模拟entity framework6

我正在使用AutoMoq,但由于entity framework(使用dbContext和代码优先) dbContext我有点困惑如何编写我的第一个unit testing // in service class(constructor) private readonly MyContext context; public PriceService(MyContext context) { this.context = context; } // following would be in nunit test method. var fixture = new Fixture().Customize(new AutoMoqCustomization()); var priceService = fixture.Create(); 当我运行unit testing时,它会崩溃 在Ploeh.AutoFixture.Kernel.TerminatingSpecimenBuilder.Create(对象请求,ISpecimenContext上下文) 在Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.c__DisplayClass6.b__1(ISpecimenBuilder b) 在System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 在System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在System.Linq.Enumerable.d__a5`1.MoveNext() 在System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable`1 source) 在Ploeh.AutoFixture.Kernel.RecursionGuard.Create(对象请求,ISpecimenContext上下文) 在Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.c__DisplayClass6.b__1(ISpecimenBuilder b) 在System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 在System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在System.Linq.Enumerable.d__a5`1.MoveNext() […]

如何指示AutoFixture不打扰填写某些属性?

我有一组嵌套相当深的数据访问类。 要构建其中5个列表,需要AutoFixture超过2分钟。 每unit testing2分钟就可以了。 如果我手工编写它们,我只会编写我需要的代码,因此它会更快地初始化。 有没有办法告诉AutoFixture只做一些属性,所以它不能花时间在我不需要的结构区域? 例如: public class OfficeBuilding { public List Offices {get; set;} } public class Office { public List YellowPages {get; set;} public List WhitePages {get; set;} } public class PhoneBook { public List AllContacts {get; set;} public List LocalContacts {get; set;} } public class Person { public int ID { […]

使用AutoMoq创建控制器时,Fixture.CreateAnonymous方法使用错误(AutoFixture)杀死测试运行程序进程

我正在尝试使用AutoMoqCustomization和AutoFixture通过Fixture.CreateAnonymous方法在unit testing中创建ASP.NET MVC2控制器。 我在TestDriven.NET下的xUnit,xUnit测试GUI和MSTest中都尝试过,并且都有相同的结果:运行测试的过程发生了大量故障。 在Windows 7 x64上,如果这很重要。 要重现,只需创建一个新的ASP.NET MVC2项目,添加对AutoFixture,AutoMoq和Moq(3.1,根据AutoMoq源)的引用,并尝试下面的(下面的repro VS2010 MVC2项目链接): [TestMethod] public void Index() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); // here’s where the error in the test host occurs: HomeController controller = fixture.CreateAnonymous(); } 在MSTest中,错误如下: 运行时遇到了致命错误。 错误的地址是0x6465f370,位于线程0x2684。 错误代码是0xc0000005。 此错误可能是CLR中的错误,也可能是用户代码的不安全或不可validation部分中的错误。 此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。 AfWithMvc repro项目(来自SkyDrive)

在AutoFixture自定义上调用Dispose方法

我正在使用AutoFixture自定义来测试访问SQL Compact DB的存储库。 测试完成后立即删除此数据库对我非常有帮助。 因为db是在自定义构造函数中创建的,所以我认为删除它的最佳位置是dispose方法。 我想的代码是: internal class ProjectRepositoryCustomization : ICustomization { private readonly String _dbLocation; public ProjectRepositoryCustomization() { var tempDbLocation = Path.Combine(Path.GetTempPath(), “TempDbToDelete”); if (!Directory.Exists(tempDbLocation)) { Directory.CreateDirectory(tempDbLocation); } _dbLocation = Path.Combine(tempDbLocation, Guid.NewGuid().ToString(“N”) + “.sdf”); } public void Customize(IFixture fixture) { DataContextConfiguration.database = _dbLocation; var dataContextFactory = new BaseDataContextFactory(); var projRepository = new ProjectRepository(dataContextFactory); fixture.Register(() […]

如何在NSubstitute中使用AutoFixture的示例

我经常使用NSubstitute。 我喜欢它。 我只是在研究AutoFixture。 看起来很棒! 我见过NSFstitute的AutoFixture,并在Moq中看到了一些如何使用此function的例子。 但我似乎无法将其翻译成NSubstitute。 我试过这个: var fixture = new Fixture().Customize(new AutoNSubstituteCustomization()); var addDest = Substitute.For(); 使用: public interface IPersonEntity { int ID { get; set; } string FirstName { get; set;} string LastName { get; set;} DateTime DateOfBirth { get; set; } char Gender { get; set; } } 我得到一个对象,但没有填充任何属性(类似于AutoFixture的点)。 我也尝试过: var fixture […]

自动混合定制:提供构造函数参数

我有以下课程: class Foo { public Foo(string str, int i, bool b, DateTime d, string str2) { ….. } } 我正在使用AutoFixture创建一个Foo : var foo = fixture.Create(); 但我希望AutoFixture为str2参数提供已知值,并对每个其他参数使用默认行为。 我尝试实现一个SpecimenBuilder但我找不到一种方法来获取与请求相关联的元数据,以便知道我是从Foo构造函数调用的。 有没有办法实现这个目标?

如何使用Autofixture创建和填充我的模拟类?

目前我正在使用EF6在UnitOfWork中实现我的存储库。 我还创建了一个In-Memory模拟实现(MockUnitOfWork和MockRepository),以便我可以在unit testing中使用它们,但是我现在必须处理对象的繁琐设置。 这不是Autofixture的设计目的吗? 我如何获得可以在包含Foo和Barr存储库的测试中使用的MockUnitOfWork? 我正在使用NSubstitute作为我的模拟框架。 IUnitOfWork public interface IUnitOfWork { void Save(); void Commit(); void Rollback(); IRepository FooRepository { get; } IRepository BarRepository { get; } } IRepository public interface IRepository where TEntity : class { Func<IQueryable, IOrderedQueryable> orderBy = null, string includeProperties = “”); IEnumerable Get(Expression<Func> filter = null, Func<IQueryable, IOrderedQueryable> orderBy = […]