I는 수보다 클 수 또는 제로와 동일해야하므로 값이, 소수 (0)임을 확정 할 및 1 이상의.
describe('percent',function(){
it('should be a decimal', function() {
var percent = insights.percent;
expect(percent).toBeGreaterThan(0);
expect(percent).toBeLessThan(1);
});
});
“> = 0″을 어떻게 모방합니까?
답변
최신 버전의 Jasmine에서 API가 변경 되었기 때문에이를 업데이트해야한다고 생각했습니다. Jasmine API에는 이제 다음 기능이 내장되어 있습니다.
- toBeGreaterThanOrEqual
- toBeLessThanOrEqual
아래 조언에 우선하여 이러한 기능을 사용해야합니다.
Jasmine matchers API에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
나는 이것이 오래되고 해결 된 질문이라는 것을 알고 있지만 상당히 깔끔한 솔루션이 누락되었음을 알았습니다. 보다 크거나 같음은보다 작음 함수의 역이므로 다음을 시도하십시오.
expect(percent).not.toBeLessThan(0);
이 접근 방식에서 백분율 값은 비동기 함수에 의해 반환되고 제어 흐름의 일부로 처리 될 수 있습니다.
답변
먼저 비교 작업을 실행 한 다음 그것이 진실인지 확인하기 만하면됩니다.
describe('percent',function(){
it('should be a decimal',function(){
var percent = insights.percent;
expect(percent >= 0).toBeTruthy();
expect(percent).toBeLessThan(1);
});
});
답변
현재 버전의 Jasmine은 toBeGreaterThan 및 toBeLessThan을 지원합니다.
expect(myVariable).toBeGreaterThan(0);
답변
이것은 기본 기능이 아닙니다.
다음과 같이 사용자 정의 매처를 추가 할 수 있습니다.
JasmineExtensions.js
yourGlobal.addExtraMatchers = function () {
var addMatcher = function (name, func) {
func.name = name;
jasmine.matchers[name] = func;
};
addMatcher("toBeGreaterThanOrEqualTo", function () {
return {
compare: function (actual, expected) {
return {
pass: actual >= expected
};
}
};
}
);
};
사실상 여러분은 matcher에 대한 생성자를 정의하고 있습니다. 이것은 matcher 객체를 반환하는 함수입니다.
‘부팅’하기 전에 포함하십시오. 기본 매처는 부팅시로드됩니다.
HTML 파일은 다음과 같아야합니다.
<!-- jasmine test framework-->
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
<!-- custom matchers -->
<script type="text/javascript" src="Tests/JasmineExtensions.js"></script>
<!-- initialisation-->
<script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
그런 다음 boot.js에서 jasmine이 정의 된 후 jasmine.getEnv () 전에 매처를 추가하는 호출을 추가합니다. Get env는 실제로 (약간 오해의 소지가있는) 설정 호출입니다.
매처는 Env 생성자에서 setupCoreMatchers에 대한 호출에서 설정됩니다.
/**
* ## Require & Instantiate
*
* Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference.
*/
window.jasmine = jasmineRequire.core(jasmineRequire);
yourGlobal.addExtraMatchers();
/**
* Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference.
*/
jasmineRequire.html(jasmine);
/**
* Create the Jasmine environment. This is used to run all specs in a project.
*/
var env = jasmine.getEnv();
샘플 테스트에 사용자 지정 매처를 추가하는 또 다른 방법을 보여 주지만 작동 방식은 .NET Framework를 사용하여 매 테스트 전에 매처를 다시 만드는 것 beforeEach
입니다. 그것은 꽤 끔찍한 것 같아서 대신이 접근 방식을 사용할 것이라고 생각했습니다.
답변
나는 이것에 늦었지만 누군가가 여전히 답을 찾기 위해이 질문을 방문하는 경우를 대비하여 게시하고 Jasmine 버전 3.0을 사용하고 @Patrizio Rullo에서 언급했듯이 toBeGreaterThanOrEqual / toBeLessThanOrEqual을 사용할 수 있습니다 .
릴리스 노트에 따라 버전 2.5에서 추가되었습니다-https: //github.com/jasmine/jasmine/blob/master/release_notes/2.5.0.md
예를 들어
expect(percent).toBeGreaterThanOrEqual(1,"This is optional expect failure message");
또는
expect(percent).toBeGreaterThanOrEqual(1);
답변
나는 오늘 같은 문제에 부딪 혔고, 밝혀진 바와 같이 그것에 대한 사용자 정의 매처를 추가하는 것은 그리 어렵지 않습니다. 사용자 정의 매처의 주요 장점은 테스트가 실패 할 때 의미있는 메시지를 반환 할 수 있다는 것입니다.
그래서 여기에 두 매처 (matcher) 코드입니다, .toBeAtLeast()
그리고 .toBeAtMost()
경우에 누군가를 도와줍니다.
beforeEach( function () {
// When beforeEach is called outside of a `describe` scope, the matchers are
// available globally. See http://stackoverflow.com/a/11942151/508355
jasmine.addMatchers( {
toBeAtLeast: function () {
return {
compare: function ( actual, expected ) {
var result = {};
result.pass = actual >= expected;
if ( result.pass ) {
result.message = "Expected " + actual + " to be less than " + expected;
} else {
result.message = "Expected " + actual + " to be at least " + expected;
}
return result;
}
};
},
toBeAtMost: function () {
return {
compare: function ( actual, expected ) {
var result = {};
result.pass = actual <= expected;
if ( result.pass ) {
result.message = "Expected " + actual + " to be greater than " + expected;
} else {
result.message = "Expected " + actual + " to be at most " + expected;
}
return result;
}
};
}
} );
} );
답변
필요한 매처를 추가하기 위해 Jasmine GitHub 마스터 브랜치 내 패치에 병합되었습니다.
toBeGreatThanOrEqual 및 toBeLessThanOrEqual 매처 추가
그러나 나는 그것이 어느 릴리스에 있을지 전혀 모른다. 그 동안 로컬 Jasmine 사본에서 내 커밋 코드를 사용해 볼 수 있습니다.