問題タブ [autofixture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
786 参照

xunit - 「弱い」タイプのAutoFixture

私はAutoFixtureが大好きですが、非常に反復的な「アレンジ」コードに遭遇しました。これは、どういうわけか、処理できるはずだと感じています。

これが私のシナリオで、CastleDynamicProxyの実装を使用して示されてIInterceptorます

最初にテスト対象のシステム:

ここで、 xUnitのデータ理論サポートを活用するいくつかの簡単なテストについて説明します。

私のCustomAutoData属性は実際にAutoFixtureをカスタマイズして、の挿入されたインスタンスIInvocationほとんど適切に構成されるようにしますが、すべての実装はプロパティとプロパティにIInterceptor完全に異なるタイプを期待するため、各テストはそれらを独自に設定する必要があります。(したがって、呼び出し。)ProxyReturnValueMock.Get(context).Setup(...)

これは問題ありませんが、のすべてのテストは、InterceptorATestsのすべてのテストと同様に、同じ数行の配置を繰り返す必要がありInterceptorBTestsます。

Mock.Get(...)繰り返しの呼び出しをきれいに削除する方法はありますか?IFixture特定のテストクラスのインスタンスにアクセスするための良い方法はありますか?

0 投票する
1 に答える
847 参照

integration-testing - データ統合テストで autofixture を使用してプロキシを作成する

Entity Framework を使用するドメイン用の一連のデータベース統合テストを作成しようとしています。いくつかのシナリオでは、オブジェクトを自動固定することをお勧めします。私の理想的な構文は次のようなものになります

明らかにCreateAnonymous()、ファクトリの入力パラメータを想定していないため、これは機能していません。FromFactory()何を提供するかについての理解に欠陥があるとしか思えません。コメントは読んでいますが、

ploehs blogを読んだ後、これらの部分がどのように相互作用するかについて少し混乱しました。

ファクトリ呼び出し中のインスタンスはMyDbContext、渡したインスタンスではありませんInject()

0 投票する
1 に答える
469 参照

autofixture - 派生型を使用したAutoFixture

AutoFixtureを使用する前の数日間、次のようなサービスの単体テストを設定するために、次のような調整を行っていた可能性がありますCustomerService

この長い配置は、AutoFixtureが解決するのが得意な問題のようです。AutoFixtureを使用してその配置を書き直すことができると思いますが、次のようになります。

HttpResponse私の質問は、テストメソッドからテストメソッドに交換したい派生型がたくさんあるという事実を踏まえて、これを行うようにAutoFixtureを構成する方法はありますか?

0 投票する
1 に答える
1043 参照

autofixture - AutoFixture:標本ビルダーに引数を渡します

(これを行う方法が見つかりませんでした。ソースコードからはサポートされていないようですが、見落としている可能性があります)

私は次のようなことをしたいと思います:

したがって、これはAutoFixtureにすでに存在する同様のシードイディオムのバリエーションですが、シードイディオムは非常にハードコーディングされています(またはそう思います)。

Quiestion:標本の引数を受け入れるようにフィクスチャをカスタマイズすることは可能ですか?

私がこれまでに持っている最善のアイデアは、結果オブジェクトを含む特別な仕様クラスを作成することです。これにより、次のことができるようになります。

使用できる登録CircleSpecificationSpecimenBuilderできるように:

シードオーバーロードでCreateAnonymousを使用するには、シード引数タイプがメソッドの戻りタイプと一致する必要があることに注意してください。

0 投票する
1 に答える
1262 参照

unit-testing - AutoFixture Customization が原因で、継承されたプロパティが入力されないのはなぜですか?

次のカスタマイズを作成し、ほとんどのテストでコンポジットの一部として適用しました。私のエンティティには読み取り専用の Id がありますが、このカスタマイズで SetId メソッドを使用して、すべてのエンティティが一時的な場合 (ID をまだ持っていない場合) に何らかの Id を持っていることを確認しています。

今日非常に奇妙なことを発見するまで、これはうまく機能しています。BaseEntity から直接継承するエンティティの 1 つをテストにフィードすると、すべて問題なく、書き込み可能なプロパティが自動入力されます。ただし、BaseEntity からさらに下にあるものから継承するエンティティを要求すると、カスタマイズによってプロパティの自動入力が妨げられます。

このテスト メソッドの User エンティティは適切に入力されています。

ただし、次のテストの AwesomeUser エンティティでは、同じプロパティが自動入力されません。

どちらのテスト ケースでも、カスタマイズにより Id プロパティが自動入力されます。カスタマイズを削除すると、SomeOtherTest の AwesomeUser インスタンスは、継承されたプロパティを適切に自動入力します。私のカスタマイズが物事を台無しにしていると想定する必要があります。

すべての BaseEntity インスタンスに Id を設定させるより良い方法はありますか、それとも AutoFixture に欠けているものがありますか? 最初、途中、最後にカスタマイズを適用しましたが、役に立ちませんでした。

0 投票する
2 に答える
3242 参照

moq - AutoFixture: モック メソッドが凍結されたインスタンスを返さない

私はこの簡単なテストを書こうとしています:

Verifyチェックは失敗します。
postProcessor.Process のコードは次のとおりです。

postProcessingActionReaderコンストラクターによって初期化されるインターフェイス フィールドです。

テストに合格することを期待していますが、失敗しましIPostProessingActionた。メソッドから返された のインスタンスは、 から返されたインスタンスCreatePostProcessingActionFromJobResultXmlと同じではないことがわかりましたfixture.Freeze<>

私の期待は、この Mock オブジェクトを凍結した後IPostProcessingAction、必要なすべての場所にインターフェイスの基になるモックを挿入し、返されるすべてのモック メソッドIPostProcessingActionがこの同じオブジェクトを返すようにすることでした。

モック メソッドの戻り値についての私の期待は間違っていますか? モック メソッドが同じ凍結されたインスタンスを返すように、この動作を変更する方法はありますか?

0 投票する
1 に答える
3279 参照

c# - AutoFixtureは匿名MVCコントローラーの作成に失敗します

コード:

例外:

System.Reflection.TargetInvocationException:System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。---> System.NotImplementedException:メソッドまたは操作が実装されていません。

MyController()3つのパラメータを取ります。

ここの回答に記載されている修正を試しましたが、機能しません。

0 投票する
1 に答える
333 参照

c# - 凍結されたモックのプロパティが上書きされています

AutoFixture が凍結されたモックのプロパティを上書きしているように見えるという問題があります。モックされたクラスのプロパティは読み取り専用であり、私が読んだことから、AutoFixture はそれに対して何もしようとすべきではありません。

以下のLINQPadで問題を再現するためのコードを含めました。Victim2 つの読み取り専用プロパティを持つ単純なテスト クラスです。問題は、Thingsプロパティの期待値を設定Objectし、型を返す AutoFixture のインスタンスとしてモックを登録するVictimと、コレクションThingsに異なる文字列が含まれることです。

問題を再現するには、LINQPad で以下のコードをC# プログラムとして実行し、NuGet からAutoFixtureMoqを参照します。名前空間MoqPloeh.AutoFixtureを必ず含めてください。

私の期待は、登録したオブジェクトを取得し、返されたのRegisterコレクションが への呼び出しで参照したコレクションを返すことです。ThingsVictimSetupGet

0 投票する
2 に答える
1787 参照

autofixture - 無効なコンストラクタ パラメータの Autofixture テスト

次のクラスとテストがあります。null 値をパラメーターとしてコンストラクターに渡すことをテストしたいのですが、ArgumentNullException. しかし、Autofixture のCreateAnonymousメソッドを使用しているため、TargetInvocationException代わりに が得られます。

この種のテストを書く正しい方法は何ですか?

0 投票する
1 に答える
1016 参照

tdd - 自動固定によって報告された循環参照が見つかりません

インフラストラクチャを検証しようとしています。AutoFixtureは、コードに循環参照があると言っており、動作を省略すると、標本をオブジェクトタイプにキャストできません。

ソリューションの依存関係をグラフ化しても、循環参照はありません。自動フィクスチャからの出力は、ドメインオブジェクトがドメインオブジェクトを指すパスを私に与えているように見えます。私はそれを理解していません...彼らはかなり明白です。

合格したテストがあるので先に進みますが、不要な循環参照がないことを確認したいと思います。また、この例で単純なドメインオブジェクトを構築していない場合、分離されたコンポーネントに後でAutoFixtureを使用できなくなるのではないかと心配しています。

成功するテストは次のとおりです。

失敗したテストは次のとおりです。

クライアントプロキシは次のとおりです(個別のプロジェクトはデータモデルプロジェクトのみを参照します)。

これが私がスピンアップしたデータサービスです(サービスは別のプロジェクトにあり、データモデルプロジェクトのみを参照しています)

データモデルクラスは次のとおりです(別のプロジェクト、他のすべてのプロジェクトによって参照されます)。

モデルプロジェクトのデータベースバージョンクラスは次のとおりです。

これが私のデータサービスプロジェクトのDatabaseVersionService.svcファイルです(空のasp.net、コンパイル、iisexpressからのデバッグ、atomまたはjsonは参照可能です):

throwingrecursionbehaviorを削除し、omitonrecursionbehaviorを追加した後の出力は次のとおりです。

結果メッセージ:System.InvalidCastException:タイプ'Ploeh.AutoFixture.Kernel.OmitSpecimen'のオブジェクトをタイプ'skeletor.Domain.DatabaseVersion'にキャストできません。結果StackTrace:
Ploeh.AutoFixture.Kernel.SpecimenFactoryで1.Create 2.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.NoSpecimenOutputGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor(Object request、ISpecimenContext context)atPloeh.AutoFixture.Kernel.CompositeSpecimenBuilder。<>c_ DisplayClass6.b _1(ISpecimenBuilder b)at System.Linq.Enumerable.WhereSelectListIterator 2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2 .MoveNext()at System.Linq.Enumerable.d_ a5 1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source)at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request、ISpecimenContext context)at Ploeh.AutoFixture.Kernel.FilteringSpecimenBuilder.Create(Object request、ISpecimenContext context) Ploeh.AutoFixture.Dsl.NodeComposerで1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.<>c__DisplayClass6.<Create>b__1(ISpecimenBuilder b) at System.Linq.Enumerable.WhereSelectListIterator2.System.Linq.Enumerable.WhereSelectEnumerableIteratorのMoveNext()2.MoveNext() at System.Linq.Enumerable.<DefaultIfEmptyIterator>d__a51.System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable 1 source) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Dsl.CompositeNodeComposer1.Create(Object request、ISpecimenContext context)atPloeh.AutoFixture.Kernel.SpecimenContextのMoveNext() Ploeh.AutoFixture.Kernel.SpecimenFactoryでResolve(Object request)2.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.NoSpecimenOutputGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.Postprocessor 1.Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder。<> c _DisplayClass6.b_1 (ISpecimenBuilder b)でSystem.Linq.Enumerable2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIteratorでCreate(Object request、ISpecimenContext context)WhereSelectListIterator 2.MoveNext()at System.Linq.Enumerable.d _a51.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1ソース)Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request、ISpecimenContext context)at Ploeh.AutoFixture.Kernel.FilteringSpecimenBuilder.Create(Object request、ISpecimenContext context)at Ploeh.AutoFixture.Dsl.NodeComposer 1.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.<>c__DisplayClass6.<Create>b__1(ISpecimenBuilder b) at System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() System.Linq.Enumerable.WhereSelectEnumerableIteratorで2.MoveNext() at System.Linq.Enumerable.<DefaultIfEmptyIterator>d__a51.MoveNext()でSystem.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable1 source) at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context) at Ploeh.AutoFixture.Dsl.CompositeNodeComposer1.Create(Object request、ISpecimenContext context)at Ploeh.AutoFixture.Kernel.SpecimenContext.Resolve(Object request)at Ploeh.AutoFixture.SpecimenFactory.CreateAnonymous [T](ISpecimenContext context、T seed)at Ploeh.AutoFixture.SpecimenFactory.CreateAnonymous [T](ISpecimenContext context)at Ploeh.AutoFixture.SpecimenFactory.CreateAnonymous [T](ISpecimenBuilderComposer composer)at Ploeh.AutoFixture.SpecimenFactory.CreateAnonymous [T](IPostprocessComposer`1 composer)at skeletor.AcceptanceTests.InfrstructureTests d:\ projects \ skeletor \ skeletor.AcceptanceTests \ InfrstructureTests.cs:line 31