Есть такой вот класс и тест не проходит только метод сохранения
public class BaseServices<T> : IBaseService<T> where T : BaseEntity, new()
{
public List<T> AllItem = new List<T>();
public bool Delete(int id)
{
bool b = false;
for (int i = AllItem.Count - 1; i >= 0; i--)
{
if (AllItem[i].Id == id)
{
AllItem.Remove(AllItem[i]);
b = true;
return b;
}
}
return b;
}
public T Get(int id)
{
T b = null;
foreach (var a in AllItem)
{
if (a.Id == id)
{
b = a;
return b;
}
}
return b;
}
public object GetAll()
{
object b = null;
foreach (var a in AllItem)
{
b = a;
return b;
}
return b;
}
public bool Save(T entity)
{
entity = new T();
AllItem.Add(entity);
return true;
}
}
И есть вот такой тест
List<AccountModel> Accounts = new List<AccountModel>();
private BaseServices<AccountModel> AccountBS = new BaseServices<AccountModel>();
Random rnd = new Random();
private int SomeId;
private int AccountsLenth;
[TestInitialize]
public void Repletion()
{
SomeId = rnd.Next(100);
for (int index = 0; index < 100; ++index)
{
AccountBS.AllItem.Add(new AccountModel { Id = index });
}
AccountsLenth = Accounts.Count;
}
[TestMethod]
public void GetTest()
{
AccountModel result = AccountBS.Get(SomeId);
Assert.IsNotNull(result);
}
[TestMethod]
public void DeleteBoolTest()
{
bool result = AccountBS.Delete(SomeId);
Assert.IsTrue(result);
}
[TestMethod]
public void SaveBoolTest()
{
var ent = new AccountModel();
bool result = AccountBS.Save(ent);
Assert.IsTrue(result);
}
[TestMethod]
public void SaveCountTest()
{
var ent = new AccountModel();
AccountBS.Save(ent);
int AccountsLenth1 = Accounts.Count;
Assert.AreNotEqual(AccountsLenth, this.Accounts.Count);
}
}
Вот тест метода SaveCountTest не проходит, говорит, что у меня списки пустые
Все просто. Нужно просто внимательно посмотреть, откуда вы берете значения. Вы создаете переменную:
List<AccountModel> Accounts = new List<AccountModel>();
но вы так ни разу туда ничего и не положили - это просто переменная. Все данные, которые у вас есть, хранятся вот тут:
private BaseServices<AccountModel> AccountBS = new BaseServices<AccountModel>();
А если быть более точным, то внутри, в AllItem
. Первое, что нужно переписать:
[TestInitialize]
public void Repletion()
{
SomeId = rnd.Next(100);
for (int index = 0; index < 100; ++index)
{
AccountBS.AllItem.Add(new AccountModel { Id = index });
}
// уберем количество элементов коллекции отсюда
// так как в процессе выполнения тестов оно меняется
}
Затем сам метод теста переписать следующим образом:
[TestMethod]
public void SaveCountTest()
{
var ent = new AccountModel();
// присвоим значение в переменную (сколько было до добавления)
var oldAccountsLenth = AccountBS.AllItem.Count;
AccountBS.Save(ent);
// сравним старое присвоенное значение и новую длину списка
Assert.AreNotEqual(oldAccountsLenth, AccountBS.AllItem.Count);
}
А вот переменную, которая несет не особо много смысловой нагрузки, нужно удалить, я говорю про:
List<AccountModel> Accounts = new List<AccountModel>();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть класс-обертка над HttpListenerЗапускает listener сразу из конструктора
Для программы создаётся расширение наNET с использованием WinForms
Во время работы, программа должна принимать AssetBundleAssetBundle должен содержать ImageTarget и контент, относящийся к нему