У меня есть этот рабочий метод, который я хотел бы написать для него методом NUnit Test Case.Это консольный проект, который означает, что сообщение об ошибке будет напечатано с помощью метода Console.WriteLine, который у меня есть для этого в методе PrintMessage в классе Utility.Вторым параметром является управление Console.Color (красный для сообщений об ошибках) с логическим значением.
public void PlaceDeposit(BankAccount account, decimal _transaction_amt)
{
if (_transaction_amt <= 0)
Utility.PrintMessage("Amount needs to be more than zero. Try again.", false);
else if (_transaction_amt % 10 != 0)
Utility.PrintMessage($"Key in the deposit amount only with multiply of 10. Try again.", false);
else if (!PreviewBankNotesCount(_transaction_amt))
Utility.PrintMessage($"You have cancelled your action.", false);
else
{
// Bind transaction_amt to Transaction object
// Add transaction record - Start
var transaction = new Transaction()
{
AccountID = account.Id,
BankAccountNoTo = account.AccountNumber,
TransactionType = TransactionType.Deposit,
TransactionAmount = _transaction_amt,
TransactionDate = DateTime.Now
};
repoTransaction.InsertTransaction(transaction);
// Add transaction record - End
account.Balance = account.Balance + _transaction_amt;
ctx.SaveChanges();
Utility.PrintMessage($"You have successfully deposited {Utility.FormatAmount(_transaction_amt)}", true);
}
}
Я создал еще один тестовый проект NUnit для тестирования вышеуказанного метода, который застрял с Assert.Должен ли я изменить приведенный выше метод, чтобы он возвращал строку (выходное сообщение метода), чтобы создать тестовый пример NUnit, или мне следует изменить исходный метод?
[TestFixture]
public class TestATMCustomer
{
[TestCase]
public void PlaceDeposit()
{
// Arrange
BankAccount bankAccount = new BankAccount() {
FullName = "John", AccountNumber=333111, CardNumber = 123, PinCode = 111111, Balance = 2300.00m, isLocked = false
};
decimal transactionAmount = 120;
var atmCustomer = new MeybankATM();
// Act
// Act and Assert
Assert.AreEqual(atmCustomer.PlaceDeposit(bankAccount, transactionAmount));
}
}
Обновлен тестовый пример, но с ошибкой в конструкторе MeybankATM
// Arrange - Start
var mock = new MockMessagePrinter();
MeybankATM atmCustomer = new MeybankATM(new RepoBankAccount(), new RepoTransaction(), mock);
BankAccount bankAccount = new BankAccount()
{
FullName = "John",
AccountNumber = 333111,
CardNumber = 123,
PinCode = 111111,
Balance = 2000.00m,
isLocked = false
};
decimal transactionAmount = 0;
// Arrange - End
// Act
atmCustomer.PlaceDeposit(bankAccount, transactionAmount);
// Assert
var expectedMessage = "Amount needs to be more than zero. Try again.";
Assert.AreEqual(expectedMessage, mock.Message);