2017-01-10 16 views
2

FakeItEasy로 테스트중인 클래스를 생성 할 수 있습니까? 생성자에서 선언 된 모든 종속성이 가짜로 자동 초기화됩니까? 내가 테스트 설정에서 모든 가짜 객체를 생성하고 그 다음클래스 만들기 및 FakeItEasy로 종속성 자동 초기화

public class Inserting 
{ 
    public Inserting(
     ITransactionService transactionService, 
     ISharedData sharedData) 
    { 
     TransactionService = transactionService; 
     SharedData = sharedData; 
    } 

    public ITransactionService TransactionService { get; } 

    public ISharedData SharedData { get; } 

    public void Enter() 
    { 
     TransactionService.StartTransaction(); 
    } 
} 

그 가짜로 테스트중인 내 수업을 구성 :

클래스를 상상해

public class InsertingTest 
{ 
    private Inserting _inserting; 
    private ISharedData _fakeSharedData; 
    private ITransactionService _fakeTransactionService;   

    [SetUp] 
    public void SetUp() 
    { 
     _fakeTransactionService = A.Fake<ITransactionService>(); 
     _fakeSharedData = A.Fake<ISharedData>(); 

     _inserting = new Inserting(_fakeTransactionService, _fakeSharedData); 
    } 

    [Test] 
    public void TestEnter() 
    { 
     // Arrange 

     // Act 
     _inserting.Enter(); 

     // Assert 
     A.CallTo(() => _fakeTransactionService.StartTransaction().MustHaveHappened(); 
    } 
} 

하지만 자바에서 본 - 세계, Mockito와 단검 (2)를 사용하는 경우,이 같은 것을 할 수있는 :

public class PhoneDialer { 
    private Activity activity; 
    private PhoneCallListener phoneCallListener; 

    @Inject 
    public PhoneDialer(Activity activity, PhoneCallListener phoneCallListener) { 
     this.activity = activity; 
     this.phoneCallListener = phoneCallListener; 
    } 
} 

public class PhoneDialerTest { 
    @Rule 
    public MockitoRule mockitoRule = MockitoJUnit.rule(); 

    @Mock 
    PhoneCallListener phoneCallListener; 

    @Mock 
    Activity activity; 

    @InjectMocks 
    PhoneDialer dialer; 

    @Test 
    public void test_dialer() throws Exception { 
     // Arrange 

     // Act 
     dialer.callNumber("abc"); 

     // Assert 
     Mockito.verify(phoneCallListener, times(1)).startCall(); 
    } 
} 

를하고 조롱 C lasses는 자동으로 가짜로 초기화됩니다. 거기에 상응하는 프로 시저 또는 기능이 C#에서 FakeItEasy와 함께 있나요?

답변

3

나는 당신이 Automatically inject fakes in test fixture with FakeItEasy과 같은 것을 원한다고 생각합니다. 주입 할 가짜를 표시하려면 [Fake]을 사용하고 검사 할 생산 유형을 표시하려면 [UnderTest]을 사용하십시오.

정말 설명서에 넣어야합니다.

또는

+0

예 Ohhhhh! 그게 정확히 내가 찾고 있던 것이 었습니다. 문서에 넣으십시오. –

+1

음, 적어도 [issue 964] (https://github.com/FakeItEasy/FakeItEasy/issues/964)를 만들었습니다. –