본문으로 건너뛰기
가이드

개발용 테스트 데이터 만들기

앱이 소유한 fixture를 선언하고 CLI로 실행한 뒤 재실행 결과를 확인합니다.

개발용 테스트 데이터 만들기

테스트 데이터는 개발자가 선택해서 실행합니다. 앱 설치마다 넣는 필수 초기값과 구분하세요. App 패키지 만들기의 Workshop과 활성 개발 샌드박스가 필요합니다.

테스트할 리소스 준비

앱 폴더에서 테넌트 공통 리소스를 만듭니다. 이미 같은 리소스가 있다면 다시 생성하지 않습니다.

코드 예시
Shell
nexia make resource Example --record-owner tenant --label-ko 예제

이 예제는 법인 소유가 아닙니다. 현재 샌드박스 fixture context의 legalEntities()와 subjects()는 빈 배열입니다. 기본 법인이나 사용자 계정을 임의 생성하거나 운영 DB에서 가져오지 마세요. 법인별 데이터가 필요하면 앱이 지원하는 조직 해석·권한 조건을 별도로 구현해야 합니다.

fixture 선언

src/Contribution/WorkshopFixtures.php를 만듭니다. 다른 앱에서는 namespace·앱 키·모델을 바꾸세요. 생성된 Manifest가 이 경로를 이미 발견합니다. 앱당 fixture contribution 하나에서 여러 키를 처리할 수 있습니다.

코드 예시
PHP
<?php

declare(strict_types=1);

namespace Nexia\Apps\Acme\Workshop\Contribution;

use InvalidArgumentException;
use Nexia\Apps\Acme\Workshop\Models\Example;
use Nexia\Fixture\Contracts\FixtureContribution;
use Nexia\Fixture\FixtureContext;

final class WorkshopFixtures implements FixtureContribution
{
    public function appKey(): string { return 'workshop'; }

    public function fixtureKeys(): array { return ['sample']; }

    public function seed(FixtureContext $context): void
    {
        if ($context->fixtureKey !== 'sample') {
            throw new InvalidArgumentException('Unsupported fixture.');
        }
        Example::firstOrCreate(
            ['public_id' => '7ce124d3-2f58-43cf-b794-16922527902c'],
            ['name' => 'Sample example'],
        );
    }
}

고정 공개 UUID로 같은 예제를 찾으므로 재실행해도 중복 생성하거나 수정한 이름을 덮어쓰지 않습니다. 생성된 모델의 public UUID 유일성 제약을 유지하세요. FixtureContext의 실행자 정보는 플랫폼이 복원하며 앱 코드에서 토큰·DB 인증정보를 준비하지 않습니다. fixture는 실제 고객 정보나 비밀값을 포함하지 않아야 합니다.

실행하고 확인하기

  1. nexia dev에서 리소스·fixture 동기화와 준비 완료를 기다립니다.
  2. Ctrl+C로 개발 감시를 종료합니다. 앱 폴더에서 실행하세요.
코드 예시
Shell
nexia db seed sample
nexia db status
  1. completed를 확인한 뒤 nexia dev를 다시 실행합니다.
  2. 워크스페이스의 설정 → 자격 증명 및 접근에서 Example 조회·수정 권한을 역할에 담고 사용자에게 부여합니다. 앱의 예제 목록에 한 건이 보이는지 확인합니다.
  3. 이름을 바꾸고 같은 절차로 다시 실행했을 때 한 건만 남고 수정한 이름이 보존되는지 확인합니다.

접수·대기 상태는 성공이 아닙니다. 키가 안 보이면 contribution 경로·appKey()·준비된 소스 버전을 확인하세요. needs_review는 지원 요청이 필요하며 DB 초기화로 우회하지 않습니다. 이 절차는 소스에 근거한 예제이며 각 앱의 실제 실행 결과는 별도로 확인해야 합니다.

필수 초기값과 구분

업무가 성립하는 데 반드시 필요한 코드·기본값은 필수 설치 콘텐츠를 사용합니다. 샘플 레코드는 초기화기에 넣지 않습니다. App 테스트하기의 로컬 테스트 fixture와 유지되는 원격 샌드박스 데이터도 구분하세요.

원본 위치: docs/developers/content/ko/building-apps/development-data.md