Autofixture 2 with()は、Autofixture 1のように機能していませんか?

StackOverflow https://stackoverflow.com/questions/4650424

  •  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を変更)。 最新のソースをダウンロードしてください それをコンパイルしてください、それは機能するはずです。

あなたが興味を持っている場合、それは子供のクラスによって無効にされている仮想プロパティに関連していました - 明らかに私が頻繁にしていることではありません。

バグについて申し訳ありません。問題が解決されていないかどうか、または他の質問があるかどうかを教えてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top