2017-01-10 13 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(); 
    } 
} 

しかし、私はJavaで見ましたMockitoとDagger 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は偽で自動的に初期化されます。 FakeItEasyでC#に同等のプロシージャや関数がありますか?

答えて

3

Automatically inject fakes in test fixture with FakeItEasyのようなものが欲しいと思います。注入する偽物をマークするには[Fake]、テストする生産タイプをマークするには[UnderTest]を使用します。

これをドキュメントに入れてください。

また、

+0

!それはまさに私が探していたものでした。それを文書に入れてください。 –

+1

さて、私は少なくとも問題964(https://github.com/FakeItEasy/FakeItEasy/issues/964)を作った。 –

関連する問題