Привет,
На данный момент я могу получить доступ к приспособлению только таким образом.
[Theory, AutoData]
public void Dummy(string dummy)
{
MethodBase method = MethodBase.GetCurrentMethod();
IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;
Assert.Equal(dummy, dummy);
}
И я получаю предупреждение «AutoDataAttribute.Fixture» - это устаревшее предупреждение.
Есть ли лучший способ получить доступ к приспособлению, созданному в атрибуте AutoData. Я хотел бы смешать создание и внедрение параметров и вручную.
Спасибо
Привет,
Конечно, просто попросите базовое устройство разрешить экземпляр IFixture
и он вернет self:
c#
[Theory, AutoData]
public void Dummy(string dummy, IFixture fixture)
{
}
Работает ли это для вас? :подмигивание:
Да, это действительно лучший способ.
Вы можете поместить это в вики AutoData?
Я повсюду искал, как это сделать.
Не думал, что контейнер IOC зарегистрировал IFixture.
Большое спасибо!
Почему вы пытаетесь зарегистрировать прибор в IoC? По моему опыту это никогда не нужно
В основном для минимизации параметров метода тестирования для сложной настройки повторяющихся интерфейсов.
[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
//This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
SetupInterfaces(fixture, needed);
//We can now use needed injected in sut.
}
У меня есть пример попроще
Я тебе больше нравлюсь
[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
Assert.Equal(String.Empty, String.Empty);
}
через это
[Fact]
public void Dummy2()
{
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());
Assert.Equal(String.Empty, String.Empty);
}
В основном для минимизации параметров метода тестирования для сложной настройки повторяющихся интерфейсов.
Согласитесь, у меня в тестах есть подобное использование. Единственная разница в том, что я предпочитаю добавлять к вспомогательным повторяющимся методам префикс When()
, поэтому тест выглядит следующим образом:
c#
public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture)
{
// arrange
WhenProviderReturnsOnlyInitializedEntities(provider, fixture);
.....
}
Но в основном идея та же 😉
Закрытие, так как больше никаких действий не требуется.
Вы можете поместить это в вики AutoData?
@ malylemire1 Я собираюсь создать где-нибудь сайт документации. Однако не стесняйтесь добавлять этот образец в нашу вики 😅
Самый полезный комментарий
Да, это действительно лучший способ.
Вы можете поместить это в вики AutoData?
Я повсюду искал, как это сделать.
Не думал, что контейнер IOC зарегистрировал IFixture.
Большое спасибо!