Вот общее решение с использованием семантики перемещения C ++ 11:
template
std::vector concat(const std::vector& lhs, const std::vector& rhs)
{
if (lhs.empty()) return rhs;
if (rhs.empty()) return lhs;
std::vector result {};
result.reserve(lhs.size() + rhs.size());
result.insert(result.cend(), lhs.cbegin(), lhs.cend());
result.insert(result.cend(), rhs.cbegin(), rhs.cend());
return result;
}
template
std::vector concat(std::vector&& lhs, const std::vector& rhs)
{
lhs.insert(lhs.cend(), rhs.cbegin(), rhs.cend());
return std::move(lhs);
}
template
std::vector concat(const std::vector& lhs, std::vector&& rhs)
{
rhs.insert(rhs.cbegin(), lhs.cbegin(), lhs.cend());
return std::move(rhs);
}
template
std::vector concat(std::vector&& lhs, std::vector&& rhs)
{
if (lhs.empty()) return std::move(rhs);
lhs.insert(lhs.cend(), std::make_move_iterator(rhs.begin()), std::make_move_iterator(rhs.end()));
return std::move(lhs);
}
Обратите внимание, что это отличается от append
до vector
.
Леса для существующих .ts файлов могут быть созданы при помощи https://github.com/smnbbrv/ngx-spec
Для установки в Угловом проекте:
npm i -D ngx-spec@^2.0.0
(-D сокращение от - сохраняют-dev)
использование в качестве примера (для сервиса):
ng g ngx-spec:spec path/my.service
или
ng g ngx-spec:spec path/my.service.ts
Для сервиса, этот doesn’t настроил тест, который будет создан через инжекцию. Адаптируйтесь так, чтобы тест выглядел примерно так:
import { TestBed, inject } from '@angular/core/testing';
import { DataService } from './data.service';
import { AuthService } from './auth.service';
import { HttpClient, HttpHandler } from '@angular/common/http';
describe('DataService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [DataService, AuthService, HttpClient, HttpHandler
]
});
});
it('should be created', inject([DataService, AuthService], (service: DataService) => {
expect(service).toBeTruthy();
}));
});
Это также предназначено, чтобы быть возможным генерировать тесты с помощью подстановочного знака, например,
ng g ngx-specs '**/*
, Который не работал на меня - посмотрите проблему GitHub:
https://<час> github.com/smnbbrv/ngx-spec/issues/10
Примечание - Как стратегия реализовать разработку через тестирование, я нашел самым легким искать и удалить весь существующий *.spec.ts
файлы, которые были автоматически созданы в Угловом проекте как часть начального создания артефакта (путем поиска в Windows Explorer), затем как начальная точка, которую я создал единственный тест для основного сервиса поставщика Угловых координат, с помощью ngx-spec