createUser
를 사용하여 id
와 username
을 제외한 모든 속성이 선택적인 사용자의 부분 모의 데이터를 생성할 수 있습니다. "@foundry/functions-testing-lib"
에서 { createUser }
를 가져와야 합니다.
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
import { MyFunctions } from ".." // 테스트 관련 기능을 포함한 라이브러리를 가져옵니다. import { verifyOntologyEditFunction, createGroup, createUser } from "@foundry/functions-testing-lib"; // 테스트 스위트(example test suite)를 설명합니다. describe("예시 테스트 스위트", () => { const myFunctions = new MyFunctions(); // "test users and groups"라는 이름의 비동기 테스트 함수를 작성합니다. test("사용자와 그룹 테스트", async () => { // 그룹 생성 const group = createGroup({ id: "groupId", }); // 사용자 생성 const user = createUser({ id: "userId", username: "username", }); // 사용자 검색 테스트: myFunctions.searchUsers 호출 후 결과가 [user, group]과 같은지 확인합니다. await expect(myFunctions.searchUsers("userId", "groupId")).resolves.toEqual([user, group]); }); });
다음 Function을 테스트하는 데 사용할 수 있습니다:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// "@foundry/functions-api"에서 필요한 클래스와 함수들을 임포트합니다. import { Function, OntologyEditFunction, Users, Group, Principal } from "@foundry/functions-api"; export class MyFunctions { // Function 데코레이터를 사용하여 searchUsers 메소드를 정의합니다. // 이 메소드는 userId와 groupId를 인자로 받아 이에 해당하는 유저와 그룹을 조회하고, 결과를 반환합니다. @Function() public async searchUsers(userId: string, groupId: string): Promise<Principal[]> { // userId와 groupId에 해당하는 유저와 그룹을 비동기적으로 조회합니다. const existingPrincipals = await Promise.all([ Users.getUserByIdAsync(userId), Users.getGroupByIdAsync(groupId), ]); // 조회된 결과 중 null 또는 undefined가 아닌 값만 필터링하고, 해당 값들을 반환합니다. return existingPrincipals.filter(r => !!r).map(r => r!); } }
createGroup
을 사용하여 id
를 제외한 모든 속성이 선택 사항인 그룹의 부분 모의를 생성할 수도 있습니다. "@foundry/functions-testing-lib"
에서 { createGroup }
를 가져와야 합니다.
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// MyFunctions 모듈을 임포트합니다. import { MyFunctions } from ".." // 검증 함수 및 그룹 생성 함수를 임포트합니다. import { verifyOntologyEditFunction, createGroup } from "@foundry/functions-testing-lib"; // 예제 테스트 스위트를 작성합니다. describe("example test suite", () => { // MyFunctions 인스턴스를 생성합니다. const myFunctions = new MyFunctions(); // 그룹 검색 기능을 테스트하는 비동기 함수를 작성합니다. test("test groups", async () => { // 그룹 객체를 생성합니다. const group = createGroup({ id: "groupId", }); // 그룹 검색 기능이 올바르게 작동하는지 확인합니다. await expect(myFunctions.searchGroups("groupId")).resolves.toEqual([group]); }); });
다음 함수를 테스트하는 데 사용할 수 있습니다:
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// 이 코드는 타입스크립트로 작성된 코드입니다. // 이 코드는 컴퓨터 과학, 데이터 엔지니어링, 인공지능 및 데이터 과학 분야에서 사용되는 코드입니다. // 이 코드는 @foundry/functions-api에서 다양한 기능을 가져와 사용합니다. import { Function, OntologyEditFunction, Users, Group, Principal } from "@foundry/functions-api"; export class MyFunctions { // searchGroups 함수는 groupId를 인자로 받아 해당 그룹의 구성원들을 반환합니다. @Function() public async searchGroups(groupId: string): Promise<Principal[]> { // 기존 그룹의 구성원들을 가져옵니다. const existingPrincipals = await Promise.all([ Users.getGroupByIdAsync(groupId), ]); // 가져온 구성원들 중 유효한 구성원들만 추려 반환합니다. return existingPrincipals.filter(r => !!r).map(r => r!); } }