Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 July 29

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Самописные фильтры и файнды
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Или есть какие-то удобные ин мемори решения, типо квери билдоры только которые с памятью работают
источник

AI

Anton Iskryzhytskyi in NodeUA - JavaScript and Node.js in Ukraine
квери билдер - это слой работы с базой данных. там не может быть логики. максимум - сложный SQL - и это должен быть интеграционный тест, ИМХО
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Да я щас вообще не говорю про базу
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Вот у тебя есть тестовые фикстуры, массив объектов
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Тебе чтобы замокать обращение нужно передать результат работы с этими тестовыми фикстурами
источник

AI

Anton Iskryzhytskyi in NodeUA - JavaScript and Node.js in Ukraine
если соблюден принцип Dependency injection, просто напишите тестовую реализацию слоя обращения к базе данных, и передайте в свой сервис
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Да да да
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Как писать тестовую реализацию, вот в чем вопрос
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Самому с помощью фильтров мапов и тд
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Или есть более удобные и наглядные решения
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Просто из всего того что я видел. Там только ин мемори штуки, которые специфичны для каждой бд
источник

AI

Anton Iskryzhytskyi in NodeUA - JavaScript and Node.js in Ukraine
const TestCarRepo = {
 getCars: [{ id: 2 }, { id: 3 }]
}


class CarService {
 constructor(carRepo) {
   this.carRepo = carRepo
 }
 
 someFunc() {
   // todo
 }
}


/// TEST code ///
// init
const carService = new CarService(TestCarRepo);

// test
carService.someFunc()

// assert
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
ну вот,добавь в свои getCars какие-то сложные фильтрации, сортировки в зависимости от пришедшего параметра и т.д
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
И тогда это будет дофига велосипедной логики которую нужно изобретать
источник

AI

Anton Iskryzhytskyi in NodeUA - JavaScript and Node.js in Ukraine
В данном примере мы тестируем CarService, соответственно все его зависимости мы мокаем.
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
))) ты как-будто не читаешь что я пишу
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
У тебя лежит файл большой с фикстурами
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
и там у тебя все тестовые машины
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
И тебе нужно сделать что-то более хитрое, чем просто отдать их все
источник