Autofixture 2 with()は、Autofixture 1のように機能していませんか?
-
09-10-2019 - |
質問
テストを移植しています オートフィックス2.0, 、そして、私は説明も修正もできない奇妙な振る舞いに駆け寄ります。この簡単なテストは私にとって失敗しています:
var autoFixtures = new Fixture();
var file = autoFixtures.Build<File>()
.With(f => f.Name, "bleh.txt")
.CreateAnonymous();
Assert.That(file.Name, Is.EqualTo("bleh.txt")); // Fail?!
私が変更すると、テストは成功します Name
の別の財産へ File
, 、それは私が何らかのカスタマイズが存在していると思うように導きます Name
Autofixture 1.0を使用していたとき、それは機能しませんでした。私は自分のコードを精査しましたが、そのようなものは見つかりません。
トレースを実現することはあまり役に立たないようです。
autoFixtures.Behaviors.Add(new TracingBehavior());
ディスプレイ、他のものの中でも:
Requested: System.String Name
Requested: Ploeh.AutoFixture.Kernel.SeededRequest
Created: Ploeh.AutoFixture.Kernel.NoSpecimen
Requested: Ploeh.AutoFixture.Kernel.SeededRequest
Requested: System.String
Created: Ploeh.AutoFixture.Kernel.NoSpecimen
Requested: System.String
Created: 8a022fda-fa4e-49b7-b0c2-285fef765386
Created: Name8a022fda-fa4e-49b7-b0c2-285fef765386
Created: Name8a022fda-fa4e-49b7-b0c2-285fef765386
fwiw、 Name
の仮想プロパティとして宣言されています File
の基本クラス、そして上に置かれます File
そのような:
public abstract class Item
{
public virtual string Name { get; set; }
...
}
public class File : Item
{
public override string Name { get; set; }
...
}
誰かが私が試してみるかもしれない何かについて何かアイデアを持っているなら、またはどこかで私が誤っての動作をカスタマイズしたかもしれない場合 Name
財産、私は最も感謝します!
解決
Autofixture 2.0にバグが見つかりました。私は今それを解決し、リポジトリへの変更をプッシュしました(3FE812AECD1を変更)。 最新のソースをダウンロードしてください それをコンパイルしてください、それは機能するはずです。
あなたが興味を持っている場合、それは子供のクラスによって無効にされている仮想プロパティに関連していました - 明らかに私が頻繁にしていることではありません。
バグについて申し訳ありません。問題が解決されていないかどうか、または他の質問があるかどうかを教えてください。
所属していません StackOverflow