2017-11-02 2 views
0

jest.js를 사용하고 있으며 함수에 날짜 객체의 매개 변수가 필요한지 확인하기 위해 테스트 중입니다. 이것을 테스트 할 수있는 방법이 있습니까?함수에 매개 변수가 있는지 테스트

예 : 내 test.js

test('setEndDate method should have a date object param',()=>{ 
    // test that the method will allow only one parameter 
    // if possible test that it excepts param of type date object 
}); 
+0

둘 이상의 요소 또는 날짜가 아닌 경우 전달 방법은 어떻게됩니까? – Taplar

+1

JavaScript의 매개 변수는 유형에 따라 제한되지 않습니다. 또한 모든 함수는 선언에 관계없이 항상 매개 변수 수를 허용 할 수 있습니다. – Pointy

답변

3

당신은 나머지 매개 변수 또는 arguments를 사용하고 함수가 전달 된 하나 개의 인수를 가지고 확인하실 수 있습니다 그 인수에

export function setEndDate(date){ 
    // do something with the date object passed in. 
} 

Dateinstanceof 같다 인수를 평가하는 데 사용됩니다.

function setDate(...args) { 
 
    let date = args[0]; 
 
    let len = args.length === 1; 
 
    return !!(date && len && date instanceof Date); 
 
} 
 

 
console.log(setDate()); // false 
 
console.log(setDate(new Date())); // true 
 
console.log(setDate(new Date(), 123)); // false

0

자바 스크립트 함수에는 사용자가 제공하지 않은 인수가 여러 개 있습니다. 또한 그들은 어떤 유형이 될 수 있습니다. 제한을 강요하려면 논리를 직접 작성해야합니다. 아마도 다음과 같은 것일 수 있습니다. 비 날짜 인자가있을 때, 또는 하나 개 이상의 인수를 통과 할 때 던져 그것을 강제 할 이유를 모르겠 (두 개의 인수를 통과 할 때 방법에서 오류가 발생한다는

function setEndDate(date){ 
 
    if (Object.keys(arguments).length != 1) throw new Error("Argument count incorrect"); 
 
    if (!(date instanceof Date)) throw new Error("date must be a Date"); 
 
    
 
    console.log("It's all good!"); 
 
} 
 

 
try { setEndDate() } catch (e) { console.log(e.message); } 
 
try { setEndDate(7, 5) } catch (e) { console.log(e.message); } 
 
try { setEndDate(7) } catch (e) { console.log(e.message); } 
 
try { setEndDate(new Date()) } catch (e) { console.log(e.message); }

0

어설 정확하게).

test('setEndDate method should have a date object param',()=>{ 
    expect(setEndDate({})).toThrow(); 
    expect(setEndDate(null)).toThrow(); 
    expect(setEndDate(1)).toThrow(); 
    expect(setEndDate('asdf')).toThrow(); 
    expect(setEndDate(new Date(), new Date())).toThrow(); 
}); 
관련 문제