У меня есть этот класс с его конструктором
public class BankAccount
{
public int Id { get; private set; }
public int BankAccountNo { get; private set; }
public decimal Balance { get; private set; }
public BankAccount(int BankAccountNo, decimal Balance)
{
this.BankAccountNo = BankAccountNo;
if(Balance <= 0)
{
throw new ArgumentException("Create bank account failed. Balance should be more than zero.");
}
this.Balance = Balance;
}
}
Я создал модульный тест xunit для проверки равенства объектов
открытый класс BankAccountTest { частный BankAccount _bankAccount;
public BankAccountTest()
{
_bankAccount = new BankAccount();
}
[Theory, MemberData(nameof(BankAccountConstructorShouldPass_Data))]
public void BankAccountConstructorShouldPass(BankAccount account, BankAccount accountExpected)
{
// Act
_bankAccount = new BankAccount(account.BankAccountNo, account.Balance);
// Assert
Assert.Equal<BankAccount>(accountExpected,_bankAccount);
}
public static TheoryData<BankAccount, BankAccount> BankAccountConstructorShouldPass_Data()
{
return new TheoryData<BankAccount, BankAccount>
{
{
new BankAccount(123, 250.00M),
new BankAccount(123, 250.00M)
},
{
new BankAccount(321, 150.50M),
new BankAccount(321, 150.50M)
}
};
}
}
Когда я запускаю тест, он не работает с ошибкой
Assert.Equal() Failure
Expected: BankAccount { Balance = 250.00, BankAccountNo = 123, Id = 0 }
Actual: BankAccount { Balance = 250.00, BankAccountNo = 123, Id = 0 }
Я пробовал с Assert.True(accountExpected.Equals(_bankAccount));
, но безуспешно.
xunit compare two objects
. buildplease.com/pages/testing-deep-equalilty - person mjwills   schedule 16.06.2020accountExpected.Should().BeEquivalentTo(_bankAccount);
. Но я пока не могу понять, как это решить без FluentAssertions. - person Steve   schedule 16.06.2020