Возможно ли создать тестируемый класс с помощью 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 и Кинжал 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# с FakeItEasy?
Ohhhhh да! Это именно то, что я искал. Пожалуйста, поместите его в документацию. –
Ну, я сделал [issue 964] (https://github.com/FakeItEasy/FakeItEasy/issues/964) как минимум. –