모듈:Unit/doc에 스크리본
Module| 이 모듈은 다음과 같은 다른 모듈에 따라 달라집니다. |
이 모듈은 다른 Lua 모듈에 대한 장치 테스트를 제공합니다.모듈을 테스트하려면 별도의 테스트 모듈을 생성해야 합니다. 일반적으로 다음 위치에 있습니다.Module:Module name/testcasesScribuntoUnit 모듈을 사용하여 모듈을 테스트합니다. 이 모듈은 테스트 모듈에 정의된 작업이 예상 결과를 생성하는지 확인합니다.
테스트 모듈 구조
테스트 모듈(테스트 스위트)을 만들려면 다음 코드로 시작합니다.
현지의 스크리쿤을 유닛으로 이동 = 요구하다('모듈:스크리쿤을 유닛으로') 현지의 나의 모듈 = 요구하다('모듈:내 모듈') 테스트할 모듈 현지의 스위트룸 = 스크리쿤을 유닛으로 이동:신규() 이 작업을 수행한 후에는 개별 테스트 기능을 에 추가할 수 있습니다.suite물건.다음으로 시작하는 모든 함수test는 테스트로 처리됩니다. (다른 함수는 ScribuntoUnit에 의해 무시되지만 테스트 자체에 사용될 수 있습니다.)
기능. 스위트룸:testSomeCall() 자신:평등을 주장합니다.('기대값', 나의 모듈.썸콜(123)) 자신:평등을 주장합니다.('기타 기대값', 나의 모듈.썸콜(456)) 끝. 기능. 스위트룸:일부 다른 호출 테스트() 자신:평등을 주장합니다.('기대값', 나의 모듈.약간의 다른 전화(123)) 자신:평등을 주장합니다.('기타 기대값', 나의 모듈.약간의 다른 전화(456)) 끝. 작성한 테스트는 주장을 해야 하며 ScribuntoUnit은 그러한 주장이 사실인지 확인합니다.예를들면,assertEquals지정된 두 인수가 모두 동일한지 확인합니다.ScribuntoUnit이 참인 어설션을 찾지 못하면 테스트가 실패하고 오류 메시지가 생성됩니다.확인에 실패한 어설션을 나타내는 오류 메시지가 표시됩니다(지금은 어설션에 대한 다른 검사가 수행되지 않음).
테스트 모듈을 완료하려면 다음을 반환해야 합니다.suite물건.
돌아가다 스위트룸 테스트 실행
테스트는 Lua 디버그 콘솔을 통해 실행할 수 있고 #invoke를 사용하여 Wiki 페이지에서 실행할 수 있습니다.디버그 콘솔을 통해 테스트를 실행하는 경우 코드를 사용합니다.require('Module:MyModule/testcases').run()Wiki 페이지에서 실행하는 경우 코드를 사용합니다.{{#invoke:MyModule/testcases run}}결과가 포함된 테이블이 생성됩니다.코드를 사용하여 보다 컴팩트한 테이블을 표시할 수도 있습니다.{{#invoke:MyModule/testcases run displayMode=short}}.
테스트
오류 메시지
모든 테스트 방법의 마지막 매개 변수는 유효성 검사에 실패할 경우 표시되는 메시지입니다.
자신:평등을 주장합니다.("기대값", 나의 모듈.썸콜(123), "내 모듈에 대한 호출.someCall(123)이 예상 값을 반환하지 않았습니다.") assert True, assert False
자신:참임 주장(표현, 메세지) 자신:assertificate(표현, 메세지) 이것들은 주어진 표현식이 평가되는지 여부를 테스트합니다.true또는false루아에서 참고.false그리고.nil로 평가함.false그리고 다른 모든 것들은 평가합니다.true.
자신:참임 주장(2 + 2 == 4) 자신:참임 주장('fo') 자신:assertificate(2 + 2 == 5) 자신:assertificate(영의) assertStringContains
자신:assertStringContains(양식, s, 평지, 메세지) 이것은 테스트를 합니다.pattern문자열에서 발견됨s.한다면plain그렇다면, 사실입니다.pattern문자 그대로의 텍스트로 해석됩니다. 그렇지 않으면,patternustring 패턴으로 해석됩니다.
문자열을 찾을 수 없는 경우 오류 메시지에 다음 값이 표시됩니다.pattern그리고.s만일s잘린 버전이 표시되는 것보다 길이가 70자가 넘습니다.이 방법은 복잡한 위키 텍스트에서 특정 동작을 테스트하는 데 유용합니다.
자신:assertStringContains("foo", "푸바") 패스 자신:assertStringContains("foo", "포바") 실패함 자신:assertStringContains(".oo", "푸바") 패스: "foo"와 일치합니다. 자신:assertStringContains(".oo", "푸바", 진실의) fails: .는 문자로 해석됩니다. assertNotStringContains
자신:assertNotStringContains(양식, s, 평지, 메세지) 이것은 의 반대입니다.assertStringContains다음과 같은 경우 테스트가 실패합니다.pattern문자열에서 발견됨s.한다면plain그렇다면, 사실입니다.pattern문자 그대로의 텍스트로 해석됩니다. 그렇지 않으면,patternustring 패턴으로 해석됩니다.
자신:assertNotStringContains("foo", "푸바") 실패함 자신:assertNotStringContains("foo", "포바") 패스 자신:assertNotStringContains(".oo", "푸바") 실패: "foo"와 일치합니다. 자신:assertNotStringContains(".oo", "푸바", 진실의) pass: .는 문자로 해석됩니다. 평등을 주장합니다.
자신:평등을 주장합니다.(기대됩니다, 실제., 메세지) 첫 번째 모수가 두 번째 모수와 동일한지 여부를 검정합니다.두 모수가 모두 숫자인 경우 값은 대신 다음을 사용하여 비교됩니다.assertWithinDelta델타 1e-8(0.00000001)은 숫자가 제한된 정밀도의 부동 소수점으로 표현되기 때문입니다.
자신:평등을 주장합니다.(4, 계산기..더하다(2, 2)) 델타 내에서 주장
자신:델타 내에서 주장(기대됩니다, 실제., 삼각주, 메세지) 두 숫자의 경우 첫 번째 숫자가 두 번째 숫자로부터 주어진 거리(델타) 내에 있는지 여부를 검정합니다.이는 Lua의 표준 설치에서 숫자를 나타내는 데 사용되는 부동 소수점 번호를 비교하는 데 유용합니다. (정확히는 이중 정밀 부동 소수점 번호를 사용합니다.)예를 들어 영어 위키백과에 설치된 Scribunto 버전에서는 다음과 같은 표현이 있습니다.0.3 – 0.2 == 0.1로 평가함.false이것은 실제로, 그 표현이0.3 – 0.2동등한0.09999999999999997780…그리고 숫자0.1동등한0.10000000000000000555…두 가지 사이의 약간의 오차는 Lua가 두 가지를 동등하게 생각하지 않는다는 것을 의미합니다.따라서 두 부동 소수점 수 사이의 동일성을 검정하려면 동일한 값이 아니라 서로의 작은 거리(델타) 내에 있는 값을 받아들여야 합니다.이 문제는 정수에 영향을 주지 않으며, 2^53의 값까지 이중 정밀 부동 소수점 수를 사용하여 정확하게 표현할 수 있습니다.
자신:델타 내에서 주장(0.1, 계산기..빼다(0.3, 0.2), 1e-10) 딥이퀄(DeepEquals
자신:딥이퀄(DeepEquals(기대됩니다, 실제., 메세지) 첫 번째 모수가 두 번째 모수와 동일한지 여부를 검정합니다.매개 변수가 테이블인 경우 재귀적으로 비교되며 __eq 메타메소드가 존중됩니다.
자신:딥이퀄(DeepEquals(표 1., 표 2) 구문 분석기 함수 동일성 주장
자신:구문 분석기 함수 동일성 주장(기대됩니다, pfname, 논병아리, 메세지) 첫 번째 매개 변수가 파서 함수 호출과 동일한지 여부를 테스트합니다.두 번째 매개 변수는 파서 함수 이름이고 세 번째 매개 변수는 파서 함수 인수의 테이블입니다.
자신:구문 분석기 함수 동일성 주장(4, 'msg:add', {2, 2}) {{msg:add22}}이(가) 4이면 true입니다. 이 기능은 Scribunto 파서 함수와 함께 사용할 때 특히 유용합니다. 예를 들어 다음과 같습니다.
기본 모듈이 "테스트 케이스" 하위 모듈에서 사용될 때 기본 모듈을 "#수정"하는 데 유용합니다. 현지의 기본적인 모델명 = mw.제목.신규(mw.현재 프레임 가져오기():제목 가져오기()).기본 텍스트 자신:구문 분석기 함수 동일성 주장(기대됩니다, '#dll', {기본적인 모델명, funcname, arg1, paramX = argParamX}) XML 표기법으로 작성된 일부 태그는 올바르게 테스트할 수 없습니다. 다음에 대한 참고 사항을 참조하십시오.assertResultEquals아래의 기능.
템플릿 동일성 확보
자신:템플릿 동일성 확보(기대됩니다, 템플릿, 논병아리, 메세지) 첫 번째 매개 변수가 템플릿 호출과 동일한지 여부를 테스트합니다.두 번째 매개 변수는 템플릿 이름이고 세 번째 매개 변수는 템플릿 인수의 테이블입니다.
자신:템플릿 동일성 확보(4, '추가', {2, 2}) {{add22}}이(가) 4이면 true입니다. XML 표기법으로 작성된 일부 태그는 올바르게 테스트할 수 없습니다. 다음에 대한 참고 사항을 참조하십시오.assertResultEquals아래의 기능.
결과를 동일하게 주장
자신:결과를 동일하게 주장(기대됩니다, 본문, 메세지) 첫 번째 매개 변수가 위키 텍스트의 확장과 동일한지 여부를 테스트합니다.두 번째 매개 변수는 임의의 위키 텍스트일 수 있습니다.
자신:결과를 동일하게 주장(4, '{Num}:계산기 추가 22}}') XML 표기법으로 작성된 일부 특수 태그는 다음과 같습니다.<pre>,<nowiki>,<gallery>그리고.<ref>정확하게 비교할 수 없습니다.이러한 태그는 Lua에 의해 처리되기 전에 스트립 마커로 변환됩니다.스트립 마커는 동일한 입력에서 생성된 경우에도 고유하므로 이러한 태그의 동일성을 테스트하는 모든 테스트가 실패합니다.이는 다음에도 적용됩니다.assertTemplateEquals그리고.assertSameResult기능들.
동일한 결과 주장
자신:동일한 결과 주장(텍스트 1, 텍스트 2, 메세지) 이것은 지정된 위키텍스트 문자열의 확장이 다른 위키텍스트 문자열의 확장과 동일한지 여부를 테스트합니다.이는 모듈이 교체하려는 템플릿과 동일한 방식으로 작동하는지 확인하는 데 유용할 수 있습니다.
자신:동일한 결과 주장('{{add22}}', '{Num}:계산기 추가 22}}') XML 표기법으로 작성된 일부 태그는 올바르게 테스트할 수 없습니다. 다음에 대한 참고 사항을 참조하십시오.assertResultEquals위의 기능
스로우즈를 주장합니다.
자신:스로우즈를 주장합니다.(에프앤, 예상 메시지, 메세지) 지정된 함수가 예외를 발생시키는지 여부를 테스트합니다.한다면expectedMessage아닙니다nil지정된 오류 메시지와 함께 예외가 발생했는지 확인합니다.
참고 항목