Autofixture: Вопрос: настройка Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… зависимостСй ΠΌΠΎΠΊΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ AutoMoqCustomization

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 15 Π°ΠΏΡ€. 2016  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: AutoFixture/AutoFixture

Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AutoMoqCustomization для автоматичСского ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ зависимостями, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ оказались Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ я ΠΎΠΆΠΈΠ΄Π°Π». Π’ΠΎΡ‚ тСстовый ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ послС замораТивания Mock<IObject> Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация, ΠΊΠΎΠ³Π΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ IObject созданный Moq, создаСтся ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠΌ?

[TestClass]
    public class MyTestClass
    {
        [TestMethod]
        public void Test()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            var objMock = fixture.Freeze<Mock<IObject>>();
            var sut = fixture.Create<Dependant2>();

            sut.Obj.Should().BeSameAs(objMock);
        }
    }

    public interface IObject { }

    public interface IDependant { IObject Obj { get; } }

    public class MyObject : IObject { }

    public class Dependant2
    {
        public Dependant2(IDependant dependant)
        {
            Obj = dependant.Obj;
        }

        public IObject Obj { get; }
    }

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

AutoMoqCustomization создаСт Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅ настраиваСт ΠΈΡ….

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ участники ΠΌΠ°ΠΊΠ΅Ρ‚Π° Π±Ρ‹Π»ΠΈ настроСны, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования вмСсто этого AutoConfiguredMoqCustomization . Он Π°) установит общСдоступныС устанавливаСмыС свойства ΠΌΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π±) установит ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ / индСксаторы для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (ΠΈ запоминания) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π»Π΅Π½ΠΈΠ²ΠΎ сгСнСрированных ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠΌ.

Π•ΡΡ‚ΡŒ Π΄Π²Π° ограничСния. НС настраиваСтся:

  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ref
  • ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Π½ΠΈΠ·Ρƒ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΈ .

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

AutoMoqCustomization создаСт Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅ настраиваСт ΠΈΡ….

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ участники ΠΌΠ°ΠΊΠ΅Ρ‚Π° Π±Ρ‹Π»ΠΈ настроСны, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования вмСсто этого AutoConfiguredMoqCustomization . Он Π°) установит общСдоступныС устанавливаСмыС свойства ΠΌΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π±) установит ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ / индСксаторы для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (ΠΈ запоминания) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π»Π΅Π½ΠΈΠ²ΠΎ сгСнСрированных ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠΌ.

Π•ΡΡ‚ΡŒ Π΄Π²Π° ограничСния. НС настраиваСтся:

  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ref
  • ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Π½ΠΈΠ·Ρƒ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΈ .

Бпасибо Π·Π° быстрый ΠΎΡ‚Π²Π΅Ρ‚! Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» AutoConfiguredMoqCustomization с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ вмСсто свойства Π² IDependant ΠΈ ΠΎΠ½ ΡƒΠ²Π°ΠΆΠ°Π» Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ экзСмпляр. Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСизмСняСмыС свойства Ρ‚Π°ΠΊΠΆΠ΅ соблюдались? Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Moq ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ срСдство получСния свойств, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ отсутствуСт.

БобствСнно, Π·Π°Π±ΡƒΠ΄ΡŒ. Он Ρ‚Π°ΠΊΠΆΠ΅ настраиваСт свойства Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для получСния, ΠΌΠΎΠ΅ ΠΏΠ»ΠΎΡ…ΠΎΠ΅.

Π― Ρ‚Π°ΠΊΠΆΠ΅ помню ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Moq, которая мСшала AutoMoq, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠ³ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свойства Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для получСния. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠ³Π΄Π° я ΠΈΠ·ΡƒΡ‡Π°Π» это, Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Moq вСрсии 4.2.1409.1722 ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅ (подробности Π² # 434). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ошибка Π±Ρ‹Π»Π° исправлСна ​​в Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии Moq, я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½.

ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ°ΠΌΡƒΡŽ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Moq, которая Π½ΠΈΠΆΠ΅ 4.2.1409.1722, ΠΈ Π²Ρ‹ ΠΏΡ€Π°Π²Ρ‹, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для свойств Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для получСния. Ошибка Moq Π½Π΅ Π±Ρ‹Π»Π° исправлСна ​​в Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Π΅Π΅ с послСднСй. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π·Π° Π’Π°ΡˆΡƒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ

Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ http://stackoverflow.com/q/36656741/126014

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ