Tag: autofixture

我应该使用AutoFixture来测试我的洋葱的核心元素,它没有依赖性吗?

这个问题来自我之前的问题: 如何使用OneTimeSetup? 特别是回答者之一的回答。 请参阅以下代码: [TestFixture] public class MyFixture { IProduct Product; [OneTimeSetUp] public void OneTimeSetUp() { IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); Product = fixture.Create(); } //tests to follow } AutoMoq仅用于创建模拟吗? 我问的原因是因为我之前正在阅读一个问题,其中回答者暗示它也用于创建普通类型,即不是模拟。 我想测试我的Onion的Core元素,它没有依赖关系。 因此我应该使用AutoFixture吗?

Ploeh AutoFixture无法从System.Runtime.Serialization.ExtensionDataObject创建实例

我们有一个MVC项目,引用了WCF服务。 这些引用将(ExtensionDataObject)ExtensionData属性添加到每个DTO和Response对象,现在AutoFixture无法创建这些类型的匿名实例。 例: public partial class SearchResultsDto : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { [System.NonSerializedAttribute()] private System.Runtime.Serialization.ExtensionDataObject extensionDataField; [global::System.ComponentModel.BrowsableAttribute(false)] public System.Runtime.Serialization.ExtensionDataObject ExtensionData { get { return this.extensionDataField; } set { this.extensionDataField = value; } } } 码: _fixture = new Fixture().Customize(new AutoMoqCustomization()); var dto = _fixture.CreateAnonymous(); 例外: Ploeh.AutoFixture.ObjectCreationException:Ploeh.AutoFixture.ObjectCreationException:AutoFixture无法从System.Runtime.Serialization.ExtensionDataObject创建实例,很可能是因为它没有公共构造函数,是抽象或非公共类型。 问题:有没有办法在AutoFixture中注册此对象,以便将其实例化为null或其他任何东西,这将允许我在具有ExtensionData属性的所有对象上执行CreateAnonymous 。

使用CreateMany()AutoFixture IEnumerable 行为

在这里查看post时,看起来我应该能够使用CreateMany()创建多个对象,使用foreach迭代它们,然后将它们作为数组返回。 我所看到的是,每次迭代似乎每次都会创建新对象。 这是预期的行为吗? 要创建的实体: public class TestEntity { public int Id { get; private set; } public string SomeString { get; set; } public void SetId(int value) { this.Id = value; } } 示例Program.cs: private static int id; static void Main(string[] args) { var fixture = new Fixture(); IEnumerable testEntities = fixture.Build().CreateMany(5); Output(testEntities); foreach (var […]

强制AutoFixture使用最贪婪的构造函数

我有一个包含多个构造函数的数据类型,我需要AutoFixture来选择最贪婪的(一个参数最多的)。 默认行为是选择编号最小的构造函数。 作者的博客文章http://blog.ploeh.dk/2009/03/24/HowAutoFixtureCreatesObjects.aspx似乎并不意味着有一种方法可以覆盖这种行为,所以它是否可能,如果是这样,如何?

需要为ApiControllers创建约定

我在测试中有一组工作命令性代码,我试图将其归结为一个基本的测试约定。 我的测试如下所示: [Theory, BasicConventions] public void GetVersionOnSiteVersionControllerReturnsASiteVersion(IFixture fixture) { fixture.OmitAutoProperties = true; SiteVersion expected = fixture.Create(); SiteVersion actual = null; var sut = fixture.Create(); var response = sut .GetSiteVersion() .ExecuteAsync(new CancellationToken()) .Result .TryGetContentValue(out actual); actual.AsSource().OfLikeness().ShouldEqual(expected); } 我还有一个允许它工作的自定义,即通过将HttpConfiguration和HttpRequestMessage设置为默认的非空值。 public class ApiControllerCustomization : ICustomization { public void Customize(IFixture fixture) { var origin = fixture.OmitAutoProperties; fixture.OmitAutoProperties = true; […]

AutoFixture:配置Open Generics Specimen Builder

我有一个使用Open Generics的对象模型(是的,是的,现在我有两个问题;这就是为什么我在这里:): – public interface IOGF { } class C { } class D { readonly IOGF _ogf; public D( IOGF ogf ) { _ogf = ogf; } } 我正在尝试让AutoFixture生成上面的D匿名实例。 然而,就其本身而言,AutoFixture没有构建IOGF的内置策略,因此我们观察到: public class OpenGenericsBinderDemo { [Fact] public void X() { var fixture = new Fixture(); Assert.Throws( () => fixture.CreateAnonymous() ); } 基本信息是: Ploeh.AutoFixture.ObjectCreationException:AutoFixture无法从IOGF`1 [C]创建实例,很可能是因为它没有公共构造函数,是抽象或非公共类型。 我很高兴为它提供一个具体的实现: […]

从所有值的子集创建匿名枚举值

假设我们将枚举类型定义为: enum Statuses { Completed, Pending, NotStarted, Started } 我想让Autofixture为我创造一个价值,而不是像Pending。 所以(假设循环生成)我想获得: 已完成,未启动,已启动,已完成,未启动,…

AutoFixture作为Automocking容器与Automocking差异?

我开始使用moq但是根据我的理解,我总是要模拟所有可以调用的方法,即使我真的不关心它们。 有时需要很长时间来模拟你忘记你想做什么的东西。 所以我一直在看自动模拟,但我不确定我应该使用什么。 AutoFixture作为自动模拟容器 Automocking 我根本不知道如何使用第一个。 我有点得到第二个但从未真正尝试过。 我不确定一个人是否比另一个好。 我唯一知道的是我使用AutoFixtures已经是第一个的依赖。 所以也许从长远来看,与第一个一起使用是有意义的,但就像我说我找不到任何关于如何使用它的基本教程。 编辑 我试图遵循“Nikos Baxevanis”的例子,但我遇到了错误。 Failure: System.ArgumentException : A matching constructor for the given arguments was not found on the mocked type. —-> System.MissingMethodException : Constructor on type ‘DatabaseProxyded46c36c8524889972231ef23659a72’ not found. var fixture = new Fixture().Customize(new AutoMoqCustomization()); var fooMock = fixture.Freeze<Mock>(); // fooMock.Setup(x => x.GetAccounts(It.IsAny())); var sut […]

将DRY应用于自动混合“构建”语句

假设我有这个具体的类: public partial class User { public int ID { get; set; } public string Email { get; set; } public string FullName { get; set; } } 我想创建一个具有有效电子邮件地址的匿名实例,并且fullname字段不超过20个字符。 我可以做这个: var fixture = new Fixture(); var anonUser = fixture.Build() .With(x => x.Email, string.Format(“{0}@fobar.com”, fixture.Create())) .With(x => x.FullName, fixture.Create()Substring(0,20)) .Create(); 有没有办法可以在一个地方定义它,以便AF知道我可以通过使用以下方式获得我的自定义anon类: var newAnon = fixture.Build();

自动锁定Web Api 2控制器

我试图在我的测试用例中自动模拟ApiController类。 当我使用WebApi1时,它工作得很好。 我开始在新项目中使用WebApi2,并且在尝试运行新测试后抛出此exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.Security.Cryptography.CryptographicException: pCertContext is an invalid handle. at System.Security.Cryptography.CAPI.CertSetCertificateContextProperty(SafeCertContextHandle pCertContext, UInt32 dwPropId, UInt32 dwFlags, SafeLocalAllocHandle safeLocalAllocHandle) at System.Security.Cryptography.X509Certificates.X509Certificate2.set_Archived(Boolean value) 我的测试代码: [Theory, AutoMoqData] public void approparte_status_code_is_returned( string privateKey, UsersController sut) { var response = sut.GetUser(privateKey); var result = response; Assert.Equal(HttpStatusCode.OK, result.StatusCode); } […]