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#に同等のプロシージャや関数がありますか?
!それはまさに私が探していたものでした。それを文書に入れてください。 –
さて、私は少なくとも問題964(https://github.com/FakeItEasy/FakeItEasy/issues/964)を作った。 –