We have an enum:

enum Letters
{
    A,
    B,
    C,
    D,
    E        
}

When I try:

var frozenLetter = fixture.Freeze(Letters.D);

Strangely, frozenLetter == A.

var letter = fixture.Create<Letters>();
var anotherLetter = fixture.Create<Letters>();

Letter and anotherLetter both equal A, so the Letters type has been frozen, but to the first constant in the enum rather than the one specified.

Is there a way to freeze an enum to the constant I wish?

有帮助吗?

解决方案

Freeze Inject and Register are slightly different.

Use Inject for the described behavior, as the following test demonstrates:

[Fact]
public void Test()
{
    var fixture = new Fixture();

    var expected = Letters.D;
    fixture.Inject(expected);

    var letter = fixture.Create<Letters>();
    var anotherLetter = fixture.Create<Letters>();

    Assert.Equal(expected, letter);
    Assert.Equal(expected, anotherLetter);
}

The problem with the question's sample code is that the parameter (seed) isn't used as the frozen value.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top