Autofixture: 偽物を作成できません

作成日 2018年06月04日  ·  4コメント  ·  ソース: AutoFixture/AutoFixture

数年前に取り組んでいたプロジェクトを更新中です。 その過程で、最新のFakeItEasyとAutoFixtureに更新しました。

次のようなエラーで失敗する40のテストがあります。

AutoFixtureはからインスタンスを作成できませんでした
FakeItEasy.Fake 1 [System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]]作成が例外で予期せず失敗したため、

内部例外が報告する場所:
Failed to create fake of type System.Collections.Generic.IList 1 [AllOverIt.Evaluator.AoiFormulaTokenProcessorContext] `

失敗している行はこれと同等です:
Fixture.Create<Fake<IList<AoiFormulaTokenProcessorContext>>>();

テストとして、私はもっと簡単なことを試しました。
Fixture.Create<Fake<IList<int>>>();

これはスローされなかったので、 AoiFormulaTokenProcessorContextコンストラクターを調べました。 これは次のようになります。

public AoiFormulaTokenProcessorContext(Func<char, bool, bool> predicate, Func<char, bool, bool> processor)

https://github.com/AutoFixture/AutoFixture/issues/984で読んだ後、これに「GenerateDelegates」を追加してみました。
Fixture.Customize(new AutoFakeItEasyCustomization {GenerateDelegates = true});

しかし、私はまだ同じ問題を抱えています。

このコードが機能していたので、私はまだ遭遇していない別の重大な変更がどこかにあると推測することしかできません。 誰かが私の方法で提案を1つか2つ投げることができることを願っています。

TIA。

question

最も参考になるコメント

わかりました。 何十年にもわたる経験から、私はもっとよく知る必要があります。私は同じ船に乗って、まったく同じことを尋ねてきました。 回答ありがとうございます。

全てのコメント4件

シナリオを共有していただきありがとうございます。

いつものように、最小限の、完全な、検証可能な例を提供するようにお願いできますか?それをコピーして貼り付けて、理由を深く調査することができますか? 悪魔はしばしばいくつかの詳細にあるので、あなたがシナリオをうまく説明したとしても、言及されていない詳細が重要になる可能性があります。

よろしくお願いします! :安心した:

申し訳ありませんが、別の(おそらくペアの)プロジェクトを作成する必要がありました-ラッパーメソッドを生のAutoFixture / FakeItEasyコードに変換する必要があるため、質問が出発する前に何か明白なことを促したのではないかと期待していました。

良いニュースは、私がそれを修正したようだということです。

問題の原因となっているAoiFormulaTokenProcessorContextクラスはinternal (別のプロジェクト)です。 publicに変更すると、エラーはなくなります。

AssemblyInfo.csファイルにはすでに[assembly: InternalsVisibleTo("...")]ましたが、古いプロジェクトにも[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]含まれていたことを思い出しました。

後者が何をするのか思い出せませんが、エラーはすべてなくなりました。

良いニュースこの問題は軽減されました:リラックス:それが私がサンプルを求めた理由です-他の要因が分離されていると常に簡単になります。

後者が何をするのか思い出せませんが、エラーはすべてなくなりました。

私は知っています:smile:それは内部で使用される偽物とCastleのプロキシに関連しています。 はい、クラスが内部である場合、それは確かに役立つはずです。

わかりました。 何十年にもわたる経験から、私はもっとよく知る必要があります。私は同じ船に乗って、まったく同じことを尋ねてきました。 回答ありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価