AutoMoqCustomization
๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ฒฉ๋ ์ข
์์ฑ์ด ์๋ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์๋ ๋ชจ์ํ๋ ค๊ณ ์๋ํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ์์๊ณผ ๋ค๋ฆ
๋๋ค. ์ฌ๊ธฐ ํ
์คํธ ์ฝ๋๊ฐ ์์ต๋๋ค. Mock<IObject>
๋๊ฒฐํ ํ Moq์์ ์์ฑํ ๋ ๋ค๋ฅธ IObject
๊ฐ ๊ณ ์ ์ฅ์น์ ์ํด ์์ฑ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ ์ด์ ๋ฅผ ์๋ ค์ฃผ์ธ์.
[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
์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. a) ๋ชจ์์ ๊ณต๊ฐ ์ค์ ๊ฐ๋ฅํ ์์ฑ์ ์ค์ ํ๊ณ b) ์กฐ๋ช
๊ธฐ์ ์ํด ๋๋ฆฌ๊ฒ ์์ฑ๋ ๊ฐ์ ๋ฐํ(๋ฐ ๋ฉ๋ชจํ)ํ๋๋ก ๋ฉ์๋/์ธ๋ฑ์๋ฅผ ์ค์ ํฉ๋๋ค.
๋ ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค. ์ค์ ํ์ง ์์ต๋๋ค:
ref
๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ฉ์๋์นํธ ์ํธ ํ๋จ์ ์์ธํ ์ ๋ณด๊ฐ ์์ต๋๋ค.
๋น ๋ฅธ ์๋ต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋๋ ์๋ AutoConfiguredMoqCustomization
์ ๋ฐฉ๋ฒ ๋์ ์์ฑ์ IDependant
๊ฐ ๋๋ ์ธ์คํด์ค๋ฅผ ์กด์คํฉ๋๋ค. ์ค์ ํ ์ ์๋ ์์ฑ๋ ์กด์ค๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? Moq๋ฅผ ์ฌ์ฉํ๋ฉด setter๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์์ฑ getter๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์ฌ์ค, ์๊ด์์ต๋๋ค. ๊ทธ๊ฒ์ get-only ์์ฑ๋ ์ค์ ํฉ๋๋ค.
๋๋ ๋ํ AutoMoq๋ฅผ ๋ฐฉํดํ์ฌ get-only ์์ฑ์ ์ค์ ํ ์ ์๊ฒ ๋ง๋๋ Moq์ ๋ฒ๊ทธ๋ฅผ ๊ธฐ์ตํฉ๋๋ค. ์ ์ด๋ ๋ด๊ฐ ์ด๊ฒ์ ์กฐ์ฌํ์ ๋ Moq ๋ฒ์ 4.2.1409.1722 ์ดํ๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค(์์ธํ ๋ด์ฉ์ #434 ์ฐธ์กฐ). ์ต์ ๋ฒ์ ์ Moq์์ ๋ฒ๊ทธ๊ฐ ์์ ๋์์ ์๋ ์์ต๋๋ค. ํ์คํ์ง ์์ต๋๋ค.
4.2.1409.1722๋ณด๋ค ๋ฎ์ ๊ฐ์ฅ ๋์ Moq ๋ฒ์ ์ ์๋ํ๋๋ฐ ๋ง์ต๋๋ค. get-only ์์ฑ์์๋ ์๋ํฉ๋๋ค. Moq ๋ฒ๊ทธ๋ ์ต์ ๋ฒ์ ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ์ ์์ ์์ ๋์ง ์์์ต๋๋ค. ๋น์ ์ ๋์์ ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
AutoMoqCustomization
๋ชจ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง๋ง ์ค์ ํ์ง๋ ์์ต๋๋ค.๋ชจ์ ๋ฉค๋ฒ๋ฅผ ์ค์ ํ๋ ค๋ฉด ๋์
AutoConfiguredMoqCustomization
์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. a) ๋ชจ์์ ๊ณต๊ฐ ์ค์ ๊ฐ๋ฅํ ์์ฑ์ ์ค์ ํ๊ณ b) ์กฐ๋ช ๊ธฐ์ ์ํด ๋๋ฆฌ๊ฒ ์์ฑ๋ ๊ฐ์ ๋ฐํ(๋ฐ ๋ฉ๋ชจํ)ํ๋๋ก ๋ฉ์๋/์ธ๋ฑ์๋ฅผ ์ค์ ํฉ๋๋ค.๋ ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค. ์ค์ ํ์ง ์์ต๋๋ค:
ref
๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ฉ์๋์นํธ ์ํธ ํ๋จ์ ์์ธํ ์ ๋ณด๊ฐ ์์ต๋๋ค.