Tietokannan siementäminen ja testaus
Oppikaa täyttämään tietokanta alkutiedoilla kehitys- ja testaustarkoituksia varten yhdenmukaisten ympäristöjen varmistamiseksi.
Tietokannan siementäminen ja testaus on ilmainen NestJS-yritysbackendien API:t-oppitunti CoddyKitissä. Tämä on oppitunti 3/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu NestJS-yritysbackendien API:t-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. NestJS-yritysbackendien API:t-kurssilla on yhteensä 3 oppituntia.
Mitä tietokannan alustaminen tarkoittaa
Kuvittele aloittavasi uuden projektin tai suorittavasi testejä. Tietokantasi on tyhjä! Tietokannan alustaminen tarkoittaa tietokannan täyttämistä alkutiedoilla.
Tiedot voivat olla esimerkiksi oletuskäyttäjätilejä tai esimerkkituotteita. Tämä on tärkeää kehityksessä ja testauksessa sekä tuotantoympäristön määrittämisessä välttämättömillä asetustiedoilla.
Alustamisen hyödyt
Alustamisella on useita keskeisiä etuja:
- Yhdenmukaiset ympäristöt: varmistaa, että kaikki tiimin jäsenet ja CI/CD-putki käyttävät samoja lähtötietoja.
- Nopeampi kehitys: kehittäjien ei tarvitse syöttää testitietoja manuaalisesti.
- Luotettava testaus: testit suoritetaan ennakoitavilla tiedoilla, joten tulokset ovat luotettavampia.
- Helpompi perehdytys: uudet tiimin jäsenet voivat määrittää paikallisen ympäristönsä nopeasti mielekkäillä tiedoilla.
NestJS- ja TypeORM-alustus
NestJS-sovelluksessa, joka käyttää TypeORMia, alustaminen tarkoittaa yleensä erillisten skriptien luomista. Skriptit käsittelevät TypeORM-entiteettejä ja repositorioita.
Vaikka TypeORMilla on CLI migraatioita varten, alustamista varten luodaan usein mukautettuja skriptejä, jotka voidaan suorittaa tarvittaessa. Skriptit käyttävät TypeORMin EntityManager-luokkaa tai tiettyjä repositorioita tietojen lisäämiseen.
Yksinkertaisen alustusskriptin luominen
Tarkastellaan käsitteellistä esimerkkiä alustusskriptistä. Skripti sijaitsee yleensä hakemistossa src/database/seeds, ja se suoritetaan mukautetulla npm-skriptillä.
Se käyttää TypeORMin Repository-luokkaa uuden käyttäjän luomiseen ja tallentamiseen, mikä varmistaa tietojen oikean säilymisen.
// src/database/seeds/user.seeder.ts
import { DataSource } from 'typeorm';
import { User } from '../../users/user.entity';
import { Seeder, SeederFactoryManager } from 'typeorm-extension';
export default class UserSeeder implements Seeder {
public async run(
dataSource: DataSource,
factoryManager: SeederFactoryManager
): Promise<any> {
const userRepository = dataSource.getRepository(User);
// Check if user already exists to prevent duplicates
let adminUser = await userRepository.findOneBy({ email: 'admin@example.com' });
if (!adminUser) {
adminUser = userRepository.create({
firstName: 'Admin',
lastName: 'User',
email: 'admin@example.com',
password: 'securePassword123', // In real app, hash this!
});
await userRepository.save(adminUser);
console.log('Admin user seeded.');
} else {
console.log('Admin user already exists.');
}
}
}Alustusskriptien suorittaminen
Suorittaaksesi alustusskriptit lisää yleensä mukautetun skriptin tiedostoon package.json. Voit käyttää ts-node-työkalua TypeScript-tiedostojen suorittamiseen suoraan tai kääntää tiedostot ensin.
Yleinen ratkaisu on käyttää typeorm-extension-kirjastoa, joka tarjoaa jäsennellymmän tavan alustusskriptien hallintaan ja suorittamiseen samalla tavoin kuin migraatioita käsitellään.
// package.json snippets
{
"scripts": {
"seed:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-extension/dist/cli/index.js seed -d src/config/typeorm.config.ts"
}
}Kehitystiedot
Kehityksessä alustaminen tarkoittaa usein tietokannan täyttämistä suurella määrällä realistisen näköisiä tietoja. Näin voit testata käyttöliittymäkomponentteja, sivutusta ja hakutoimintoja luomatta satoja tietueita manuaalisesti.
Voit käyttää alustusskripteissä esimerkiksi kirjastoja Faker.js tai @faker-js/faker monipuolisten ja satunnaisten tietojen luomiseen käyttäjille, tuotteille, julkaisuille ja muille kohteille.
Testikohtaiset tiedot
Testauksessa alustamisella on tarkempi tehtävä. Yksikkö- ja integraatiotestejä varten tarvitset usein hyvin tarkasti määritettyjä ja hallittuja tietojoukkoja.
Kirjautumistoiminnon testi saattaa esimerkiksi tarvita vain yhden tietyn käyttäjätietueen, ei satoja. Näin testien tulokset ovat deterministisiä eivätkä testit rikkoudu odottamattomien tietojen vuoksi.
Alustaminen testityönkuluissa
Jotta jokainen testiajo alkaa puhtaalta pöydältä, alustusskriptit suoritetaan usein ennen testejä tai niiden jälkeen. Suosittu testauskehys Jest mahdollistaa valmistelu- ja siivoustoimintojen määrittämisen.
Voit käyttää beforeEach- tai beforeAll-funktiota alustusskriptin suorittamiseen ja varmistaa, että tietokanta on tunnetussa tilassa ennen testien alkamista.
// Conceptual test file snippet
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { AppModule } from './app.module';
import { DataSource } from 'typeorm';
import UserSeeder from './database/seeds/user.seeder'; // Your seeder
describe('UsersController (e2e)', () => {
let app: INestApplication;
let dataSource: DataSource;
beforeAll(async () => {
const moduleFixture = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
// Get TypeORM DataSource
dataSource = app.get(DataSource);
});
beforeEach(async () => {
// Clear database and run specific seeders before each test
await dataSource.synchronize(true); // CAUTION: Clears all data! Use carefully.
await new UserSeeder().run(dataSource, null); // Run your seeder
});
afterAll(async () => {
await app.close();
});
it('/users (GET) should return seeded users', () => {
// Test logic here, expecting seeded data
});
});Alustamisen keskeiset käytännöt
Noudata seuraavia vankan alustamisen käytäntöjä:
- Idempotenssi: varmista, ettei alustusskriptin suorittaminen useita kertoja luo päällekkäisiä tietoja, ellei sitä ole tarkoitettu. Tarkista ensin olemassa olevat tietueet.
- Selkeä erottelu: pidä kehityksen alustusskriptit, jotka sisältävät paljon testitietoja, erillään testauksen alustusskripteistä, jotka sisältävät vähän mutta tarkasti määritettyjä tietoja.
- Versionhallinta: tallenna alustusskriptit versionhallintajärjestelmään.
- Ympäristökohtaisuus: ole varovainen suorittaessasi alustusskriptejä tuotannossa. Lisää vain välttämättömät asetustiedot.
Alustamisen hyödyt
Tietokannan alustamisesta on merkittävää hyötyä kehityksessä ja testauksessa.
Mitkä seuraavista ovat tietokannan alustamisen ensisijaisia hyötyjä?
Kertaus: onnistunut alustaminen
Onnittelut! Olet oppinut tietokannan alustamisesta, joka on tärkeä käytäntö jokaiselle taustajärjestelmien kehittäjälle.
Käsittelimme, mitä alustaminen tarkoittaa, mitä hyötyä siitä on kehityksessä ja testauksessa sekä miten alustusskriptejä toteutetaan ja suoritetaan NestJS/TypeORM-sovelluksessa. Näit myös, miten alustaminen yhdistetään testityönkulkuihin.
Kun hallitset alustamisen, varmistat kehitys- ja testauskierrosten yhdenmukaisuuden, luotettavuuden ja tehokkuuden!
Opi TypeScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 20
- Oppitunnit
- 76
Usein kysytyt kysymykset
Onko oppitunti ”Tietokannan siementäminen ja testaus” ilmainen?
Kyllä – oppitunnin ”Tietokannan siementäminen ja testaus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko NestJS-yritysbackendien API:t-kurssin, päivitä CoddyKit PROhon. NestJS-yritysbackendien API:t-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Tietokannan siementäminen ja testaus”?
Oppikaa täyttämään tietokanta alkutiedoilla kehitys- ja testaustarkoituksia varten yhdenmukaisten ympäristöjen varmistamiseksi. Harjoittelet NestJS-yritysbackendien API:t-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni NestJS-yritysbackendien API:t-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin NestJS-yritysbackendien API:t-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/3.
Kuinka kauan ”Tietokannan siementäminen ja testaus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä NestJS-yritysbackendien API:t-oppitunnilla?
Kyllä. Jokainen NestJS-yritysbackendien API:t-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Mukautetut TypeORM-repositoryt
- Transaktiot ja migraatiot
- Tietokannan siementäminen ja testaus