ThingWorx Flow > ThingWorx Flow SDK > 커넥터 테스트
커넥터 테스트
test 명령 
test 명령은 커넥터 아티팩트를 테스트하는 데 사용됩니다. 아티팩트에는 몇 가지 공통 옵션과 몇 가지 특정 옵션이 포함됩니다. test 명령은 아티팩트의 유형을 하위 명령으로 사용합니다. test 명령에는 다음 명령이 포함됩니다.
명령
설명
flow test action <name>
이름이 <name>인 작업을 테스트합니다.
flow test connection <name>
이름이 <name>인 연결을 테스트합니다.
flow test lookup <name> <method>
조회 <name>에서 이름이 <method>인 조회 함수를 테스트합니다.
flow test oauth <name>
이름이 <name>인 OAuth를 테스트합니다.
flow test trigger <name> <method>
이름이 <name>인 트리거를 테스트합니다.
test 명령에는 다음 옵션이 포함됩니다.
옵션
설명
데이터 유형
--version
버전 번호를 표시합니다.
[부울]
--help
도움말을 표시합니다.
[부울]
--timeout
작업에 대한 제한 시간입니다. --timeout 옵션은 제한 시간(밀리초)을 지정합니다(기본값: 30000밀리초). 이 옵션을 사용하면 코드가 지정된 시간 내에 완료되고 콜백 호출 누락과 같은 오류를 캡처합니다.
[기본값: 30000]
--logLevel,-1
로그 수준을 설정합니다.
[기본값: "info"]
ThingWorx Flow CLI를 사용하면 서버에 커넥터를 배포하기 전에 개별 아티팩트를 테스트할 수 있습니다. 이렇게 하면 커넥터를 배포하기 전에 아티팩트가 제대로 작동 중인지 확인할 수 있습니다.
테스트 사례는 mocha-chai 프레임워크를 사용하여 작성되었습니다. Mocha는 테스트 세트를 정의하는 데 사용되고, chai는 어설션 라이브러리로 사용됩니다. 모든 테스트 사례는 특정 아티팩트 테스트 폴더 아래의 testData 폴더 아래에 정의됩니다.
test 명령을 사용하면 ThingWorx Flow CLI에서 아티팩트를 테스트할 수 있습니다.
아티팩트를 테스트하려면 명령 프롬프트에서 다음 명령을 실행합니다.
1. cd <user project root directory>
2. flow test <artifactType> <name>
OAuth 및 트리거를 테스트하기 위한 구성 
flow test oauthflow test trigger 명령은 내부적으로 웹 서버를 시작합니다. 웹 서버는 https 요청만 수락합니다. 요청 구성을 제공하도록 허용하려면 인증서가 필요합니다. 인증서가 없으면 다음 오류가 발생합니다.
[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\<user-home-dir\.flow\key.pem>
자체 서명된 인증서를 만들려면 다음을 수행합니다.
1. openssl을 다운로드하고 설치합니다.
2. openssl이 경로에 있다고 가정하고 openssl req -nodes -new -x509 -keyout key.pem -out cert.pem을 실행합니다.
3. 이러한 파일을 사용자의 홈 디렉터리에 있는 .flow 디렉터리에 복사합니다.
호스트 이름 및 포트를 구성하려면 사용자 홈 디렉터리에 있는 .flow 디렉터리에서 flow.json 파일을 만듭니다. 샘플 파일은 다음과 같습니다.
{
"passphrase": "xyz",
"hostname" : "flow.local.rnd.ptc.com",
"port" : 443
}
모든 속성은 선택 사항입니다.
Passphrase - 암호가 필요한 개인 키와 함께 사용됩니다.
Hostname - OAuth에 대한 redirect_uri를 생성하고 트리거 URL을 만드는 데 사용됩니다. 대부분의 서비스는 localhost를 redirect_uri의 유효한 호스트 이름으로 허용하지 않을 수 있습니다. 일부 응용 프로그램에는 특별히 웹후크 등록 URL로 localhost가 아닌 URL이 필요합니다. 또한 테스트를 위해 개발 시스템에 대한 URL을 생산 시스템의 URL과 일치시킬 수도 있습니다. 예를 들어, Google에 등록한 redirect_urihttps://flow.local.rnd.ptc.com/Thingworx/Oauths/oauth/return인 경우 flow.json의 호스트 이름은 flow.local.rnd.ptc.com이어야 합니다. 또한 호스트가 <%WINDIR%>\system32\drivers\etc\hosts에 추가됩니다.
* 
이 파일을 편집하려면 편집기를 관리자로 실행합니다.
OAuth 구성 테스트 
각 OAuth 공급자마다 사용자 자격 증명을 수락하는 형식이 다르므로 브라우저를 통해 OAuth 구성 테스트가 수행됩니다. CLI는 내부적으로 Express 웹 서버를 실행하여 성공한 인증 또는 실패한 인증에 대해 IdP가 보낸 응답을 처리합니다.
oauth 구성을 테스트하려면 다음 작업을 수행합니다.
1. 프로젝트 디렉터리에서 다음 명령을 실행합니다.
flow test oauth <oauth name>
로그인에 성공하면 OAuth 유효성 검사기 브라우저 창이 열립니다. 자세한 내용은 자습서의 예를 참조하십시오.
2. 테스트할 구성을 선택한 다음 OAuth 구성 유효성 검사를 클릭하거나 종료를 클릭합니다.
연결 테스트 
test connection 명령은 validate 메소드를 호출한 다음 connect 메소드를 호출하고, 입력 스키마에 대해 입력을 테스트하고 출력 스키마에 대해 출력을 테스트합니다.
연결을 테스트하려면 다음을 수행합니다.
1. 프로젝트 디렉터리에서 다음 명령을 실행합니다.
npm install
2. 패키지에서 테스트 데이터 파일을 만들고 해당 데이터를 서비스 공급자 정보로 채웁니다.
파일은 다음 코드와 같이 <projectDir>\test\testData의 테스트 connectionTestData에 대한 샘플 데이터를 포함합니다.
module.exports = {
sampleInput : {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
},
sampleOutput : {
handle: {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
} }
}
3. 다음 옵션을 사용하여 test 명령을 실행합니다.
옵션
설명
데이터 유형
--version
버전 번호를 표시합니다.
[부울]
--help
도움말을 표시합니다.
[부울]
--timeout
작업에 대한 제한 시간입니다. --timeout 옵션은 제한 시간(밀리초)을 지정합니다(기본값: 30000밀리초). 이 옵션을 사용하면 코드가 지정된 시간 내에 완료되고 콜백 호출 누락과 같은 오류를 캡처합니다.
[기본값: 30000]
--logLevel,-1
로그 수준을 설정합니다.
[기본값: "info"]
--artifactVersion,-v
테스트할 아티팩트의 버전입니다.
해당 없음
--projectDir,-d
프로젝트의 상위 디렉터리입니다.
해당 없음
--input,-i
입력 변수의 이름입니다.
해당 없음
--output,-o
예상 출력 변수의 이름입니다.
해당 없음
--testDataFile,-f
testData 파일의 경로입니다.
해당 없음
--save,-s
사용자에 대한 자격 증명 저장소에 저장합니다.
해당 없음
--noSchemaValidation,-n
스키마 유효성 검사를 비활성화합니다.
[기본값: false]
test를 실행하면 connect 메소드와 validate 메소드가 모두 성공해야 출력을 생성합니다. 이 명령은 입력이 입력 스키마와 일치하고 출력이 예상 출력과 일치하는지도 확인합니다.
--save 옵션은 연결 명령의 출력을 사용자 홈 디렉터리에 있는 .flow 폴더의 creds.json 파일에 저장합니다. 이 명령을 실행한 출력은 연결이 파일에 저장되는 키입니다. 이 키를 나중에 사용하면 저장된 인증 정보를 다른 test 명령에 전달할 수 있습니다.
조회 테스트 
조회의 구조는 다른 아티팩트의 구조와 다르고, 조회는 다른 아티팩트와 동일한 방식으로 버전 지정되지 않습니다. 이름 자체가 버전으로 사용됩니다. 새로운 기능이 필요한 경우 새 이름의 새 조회가 조회 JavasSript 파일에서 작성됩니다. 다음 명령을 사용하여 조회에 대한 test 명령을 실행합니다.
사용 가능한 옵션은 다음과 같습니다.
옵션
설명
데이터 유형
--version
버전 번호를 표시합니다.
[부울]
--help
도움말을 표시합니다.
[부울]
--timeout
작업에 대한 제한 시간입니다. --timeout 옵션은 제한 시간(밀리초)을 지정합니다(기본값: 30000밀리초). 이 옵션을 사용하면 코드가 지정된 시간 내에 완료되고 콜백 호출 누락과 같은 오류를 캡처합니다.
[기본값: 30000]
--logLevel,-1
로그 수준을 설정합니다.
[기본값: "info"]
--projectDir,-d
프로젝트의 상위 디렉터리입니다.
해당 없음
--connection,-c
삽입할 연결의 UID입니다.
해당 없음
--access_token,-a
예상 출력 변수의 이름입니다.
해당 없음
--input,-i
testData 파일의 경로입니다.
해당 없음
--output,-o
예상 출력 변수의 이름입니다.
해당 없음
--testDataFile,-f
testData 파일의 경로입니다.
해당 없음
--searchById
검색에 사용할 ID입니다.
해당 없음
--searchByValue
검색에 사용할 값입니다.
해당 없음
--filter
항목을 검색하는 데 사용할 필터입니다.
해당 없음
flow test lookup <name> <method>
조회에는 두 가지 검색 옵션인 searchByIdsearchByValue가 있으며, 페이지 매김과 관련된 다음 세 가지 옵션이 있습니다.
조회는 모든 데이터를 한 번에 반환하며, 이 옵션에는 아무런 작업도 필요하지 않습니다.
응용 프로그램에서 지원하는 페이지 매김 API - 조회 코드에서 getNextPage api를 호출하고 서비스가 다음 페이지에서 데이터를 반환할 수 있도록 하는 인수를 전달합니다. 이 정보는 사용자가 조회 필드 값에 대한 목록에서 추가 로드를 클릭할 때 조회에 전달됩니다.
지원되지 않는 페이지 매김 - 응용 프로그램에서 데이터를 질의하고 조회 서비스에서 현재 페이지 및 이전 모든 페이지에 대한 기록만 표시하도록 데이터를 자릅니다.
작업 테스트 
작업 테스트는 조회 테스트와 유사합니다. 조회는 테스트 작업의 일부로 테스트되지 않습니다. 입력에는 조회에서 제공되는 결과가 이미 포함되어 있어야 합니다.
작업을 테스트하려면 다음 작업을 수행합니다.
1. 샘플 입력 및 샘플 출력 JSON을 테스트 데이터 파일에 씁니다. 입력 및 출력 샘플의 경우 자습서 B를 참조하십시오.
2. 프로젝트 디렉터리에서 다음 옵션을 사용하여 test 명령을 실행합니다.
옵션
설명
데이터 유형
--version
버전 번호를 표시합니다.
[부울]
--help
도움말을 표시합니다.
[부울]
--timeout
작업에 대한 제한 시간입니다. --timeout 옵션은 제한 시간(밀리초)을 지정합니다(기본값: 30000밀리초). 이 옵션을 사용하면 코드가 지정된 시간 내에 완료되고 콜백 호출 누락과 같은 오류를 캡처합니다.
[기본값: 30000]
--logLevel,-1
로그 수준을 설정합니다.
[기본값: "info"]
--artifactVersion,-v
테스트할 아티팩트의 버전입니다.
[기본값: "v1"]
--connection,-c
삽입할 연결의 UID입니다.
해당 없음
--access_token,-a
예상 출력 변수의 이름입니다.
해당 없음
--projectDir,-d
프로젝트의 상위 디렉터리입니다.
[기본값: "."]
--input,-i
testData 파일의 경로입니다.
해당 없음
--output,-o
예상 출력 변수의 이름입니다.
해당 없음
--testDataFile,-f
testData 파일의 경로입니다.
해당 없음
--noSchemaValidation,-n
스키마 유효성 검사를 비활성화합니다.
[기본값: false]
트리거 테스트 
트리거 테스트는 작업, 연결 및 조회와 약간 다릅니다. 다음 옵션을 사용하여 test 명령을 실행할 수 있습니다.
다음 표에서는 트리거를 테스트하는 데 사용할 수 있는 여러 옵션에 대해 설명합니다.
옵션
설명
데이터 유형
--version
버전 번호를 표시합니다.
[부울]
--help
도움말을 표시합니다.
[부울]
--timeout
작업에 대한 제한 시간입니다. --timeout 옵션은 제한 시간(밀리초)을 지정합니다(기본값: 30000밀리초). 이 옵션을 사용하면 코드가 지정된 시간 내에 완료되고 콜백 호출 누락과 같은 오류를 캡처합니다.
[기본값: 30000]
--logLevel,-1
로그 수준을 설정합니다.
[기본값: "info"]
--artifactVersion,-v
테스트할 아티팩트의 버전입니다.
[기본값: "v1"]
--connection,-c
삽입할 연결의 UID입니다.
해당 없음
--access_token,-a
예상 출력 변수의 이름입니다.
해당 없음
--projectDir,-d
프로젝트의 상위 디렉터리입니다.
[기본값: "."]
--input,-i
입력 변수의 이름입니다.
해당 없음
--output,-o
예상 출력 변수의 이름입니다.
해당 없음
--testDataFile,-f
testData 파일의 경로입니다.
해당 없음
--noSchemaValidation,-n
스키마 유효성 검사를 비활성화합니다.
[기본값: false]
--polling,-p
트리거가 폴링 트리거임을 나타냅니다.
해당 없음
--event,-e
테스트할 이벤트입니다.
해당 없음
--mockData,-m
이벤트에 대한 mockdata가 있는 변수의 이름입니다.
해당 없음
--interval,-t
트리거할 간격(초)입니다.
[기본값: 15]
--stopAfter,-s
트리거에 대한 최대 호출 수입니다.
[기본값: 1]
설정할 메소드를 지정해야 합니다. 폴링 트리거의 경우 메소드는 executeactivate입니다.
다양한 아티팩트 테스트의 예는 자습서 B를 참조하십시오.
도움이 되셨나요?