問題タブ [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.
unit-testing - Autofixture の CreateProxy を使用して Likeness、SemanticComparison 機能を使用する際の問題
Autofixture のCreateProxy メソッド に関する以前の質問で、潜在的なバグが特定されました。
この失敗したテストはその結果ではないと思いますが、むしろ Likeness.Without(...).CreateProxy() 構文がどのように機能するかについての私の継続的な混乱です。オブジェクトの新しいインスタンスを作成し、その作成がSUTであると見なして、元のテスト を少しだけ複雑にする次の失敗したテストを考えてみましょう。
ここにバンドがあります:
私の以前の質問Source
は、 が一般的にどうあるLikeness
べきかを理解するのに役立つほど複雑ではありませんでした。
ソースはSUTの出力である必要がありますか? その場合、AutoFixture によって作成されたテンプレートインスタンスと比較されますか?
または、ソースはAutoFixture によって作成されたテンプレートインスタンスである必要があります。その場合、 SUTの出力と比較されますか?
編集:テストのエラーを修正
プロパティをと新しいインスタンスのtemplate.Brass
プロパティの両方に誤って割り当てたことに気付きました。更新されたテストは修正を反映しており、6 つのアサーションすべてがパスするようになりました。Brass
Strings
Band
var createdBand = new Band {Brass = template.Brass, Strings = template.Strings}
autofixture - Why doesn't Autofixture Likeness behave like I'd expect for one of these two tests?
Given these classes:
Why does this test pass...
...and this one fail? (the difference is the DrumAndBaseBand
instantiation)
c# - 仮想プロパティを無視
ストレージ用にEntity Frameworkを使用したMVC4プロジェクトがあります。私たちのテストでは、最近 Autofixture を使い始めましたが、本当に素晴らしいです。
私たちのモデル グラフは非常に深く、通常、AutoFixture で 1 つのオブジェクトを作成すると、グラフ全体が作成されます: Person -> Team -> Departments -> Company -> Contracts -> ....など。
これの問題は時間です。オブジェクトの作成には最大 1 秒かかります。そして、これは遅いテストにつながります。
私がよくやっているのは、次のようなことです。
そして、これは機能し、迅速です。しかし、この過度な仕様はテストを読みにくくし、時には.With(c => c.PersonId, 42)
unimportant のリストのような重要な詳細を失うことがあり.Without()
ます。
これらの無視されたオブジェクトはすべて、Entity Framework のナビゲーション プロパティであり、すべて仮想です。
仮想メンバーを無視するよう AutoFixture に指示するグローバルな方法はありますか?
を作成しようとしましISpecimentBuilder
たが、うまくいきません:
ISpecimenBuilder
構築しているオブジェクトが別のクラスの仮想メンバーであることを検出する方法が見つからないようです。おそらくISpecimenBuilder
、これはこれを行うのに適切な場所ではありません。他のアイデアはありますか?
c# - Autofixture: 次のコードを宣言的に表現するには?
次のコードを宣言的な方法で表現するのに問題があります。
私の生産コードでは、次のようなものがあります。
SomeClass のコンストラクターは次のように定義されています。
ティア、
デビッド
編集:
一部のクラスは次のようになります
c# - タイプの AutoFixture 標本ビルダーの作成
この場合は、特定のタイプの AutoFixture 標本ビルダーを作成していSystem.Data.DataSet
ます。ビルダーは、テスト用FakeDataSet
にカスタマイズされたを返しDataSet
ます。
以下は、 aが要求されているdataSet
場合でも、常に null を返すため、機能しません(プロパティにドリルダウンすることでわかります)。DataSet
request
このバリエーションは機能しますが、複雑すぎるようです。同じことを達成するためのより良い方法があるように感じますが、何かが足りないだけです。
unit-testing - F# UnitTest プロジェクトの AutoFixture がテスト エクスプローラーに単体テストを表示しない
Visual Studio 2012 プロジェクトと次の NuGet パッケージがインストールされています。
- Moqを使用した自動モッキングによるAutoFixture
- xUnit.net データ理論による Autofixture
- AutoFixture
- モク
- xUnit.net: 拡張機能
- xUnit.net: ランナー
- xUnit.net
次の不自然な Logger クラス (Logger.fs) があるとします。
および次の単体テスト:
テスト エクスプローラーは、すべてのテストを表示してプロジェクトをビルドしていることを確認した後、単体テストを認識しません。プロジェクトは正しくビルドされ、ビルド、一般、またはテストの出力ログにエラーや警告はありません。
現在の Theory 属性と AutoData 属性を Fact 属性に置き換えると、テストが表示されます。
AutoFixture は F# テスト プロジェクトでサポートされていますか? 他の誰かがこれを複製して、私が間違っていることを知ることができますか?
c# - 同じプロパティ名で Autofixture Fixture.Build().With()
「with」メソッドでプロパティを設定すると、同じ名前のネストされたオブジェクトのすべてのプロパティがnullのままになります。
(autofixture の最新バージョンを 3.0.8 として使用しています)
この状況では、obj.Id == "something" は true に等しくなりますが、obj.Things[0].Id == null も true に等しくなります。
バグがあるか、間違っていると思います。誰でも助けてくれる?
c# - AutoFixture: System.Type から CreateAnonymous を作成する方法
System.Type のみを使用して、AutoFixture からオブジェクトを作成する必要があります。CreateAnonymous()
ただし、単純に型を取る のオーバーロードはないようです。System.Type を T に変換する方法はありますか?
使用状況の詳細を編集:
複雑なマッピング シナリオをサポートするコンポーネントを挿入するためのフックを持つ AutoMapper を使用しています。
署名からわかるように、クライアントはFunc
、挿入されたサービス (ほとんどの場合 ValueResolver 実装) が必要なときにいつでも AutoMapper が呼び出す を登録できます。
プロダクション ビルドでは、このメソッドは StructureMap コンテナを呼び出してコンポーネントを取得します。ただし、マッピング コードを単体テストする場合は、スタブ実装を提供する必要があります。そうしないと、AutoMapper が例外をスローします。AutoFixture + Moq を自動モック コンテナーとして使用しているため、AF が完全にハイドレートされたスタブを作成するのは当然のことのように思われるため、単体テスト コードの記述に集中できます。
c# - この場合、AutoFixture を使用するにはどうすればよいですか?
次のコードがあります。
そしてそれはテストに合格します。
次に、次のように AutoFixture を使用してみました。
これは失敗します。特に、patientRecord
2 番目のインスタンスの は適切に設定されていません。
ここで何が間違っていますか?