개발용 테스트 데이터 만들기
앱이 소유한 fixture를 선언하고 CLI로 실행한 뒤 재실행 결과를 확인합니다.
개발용 테스트 데이터 만들기
테스트 데이터는 개발자가 선택해서 실행합니다. 앱 설치마다 넣는 필수 초기값과 구분하세요. App 패키지 만들기의 Workshop과 활성 개발 샌드박스가 필요합니다.
테스트할 리소스 준비
앱 폴더에서 테넌트 공통 리소스를 만듭니다. 이미 같은 리소스가 있다면 다시 생성하지 않습니다.
nexia make resource Example --record-owner tenant --label-ko 예제이 예제는 법인 소유가 아닙니다. 현재 샌드박스 fixture context의 legalEntities()와 subjects()는 빈 배열입니다. 기본 법인이나 사용자 계정을 임의 생성하거나 운영 DB에서 가져오지 마세요. 법인별 데이터가 필요하면 앱이 지원하는 조직 해석·권한 조건을 별도로 구현해야 합니다.
fixture 선언
src/Contribution/WorkshopFixtures.php를 만듭니다. 다른 앱에서는 namespace·앱 키·모델을 바꾸세요. 생성된 Manifest가 이 경로를 이미 발견합니다. 앱당 fixture contribution 하나에서 여러 키를 처리할 수 있습니다.
<?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는 실제 고객 정보나 비밀값을 포함하지 않아야 합니다.
실행하고 확인하기
nexia dev에서 리소스·fixture 동기화와 준비 완료를 기다립니다.- Ctrl+C로 개발 감시를 종료합니다. 앱 폴더에서 실행하세요.
nexia db seed sample
nexia db statuscompleted를 확인한 뒤nexia dev를 다시 실행합니다.- 워크스페이스의 설정 → 자격 증명 및 접근에서 Example 조회·수정 권한을 역할에 담고 사용자에게 부여합니다. 앱의 예제 목록에 한 건이 보이는지 확인합니다.
- 이름을 바꾸고 같은 절차로 다시 실행했을 때 한 건만 남고 수정한 이름이 보존되는지 확인합니다.
접수·대기 상태는 성공이 아닙니다. 키가 안 보이면 contribution 경로·appKey()·준비된 소스 버전을 확인하세요. needs_review는 지원 요청이 필요하며 DB 초기화로 우회하지 않습니다. 이 절차는 소스에 근거한 예제이며 각 앱의 실제 실행 결과는 별도로 확인해야 합니다.
필수 초기값과 구분
업무가 성립하는 데 반드시 필요한 코드·기본값은 필수 설치 콘텐츠를 사용합니다. 샘플 레코드는 초기화기에 넣지 않습니다. App 테스트하기의 로컬 테스트 fixture와 유지되는 원격 샌드박스 데이터도 구분하세요.