Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试具有内部函数的函数_Javascript_Unit Testing_Jestjs - Fatal编程技术网

Javascript 测试具有内部函数的函数

Javascript 测试具有内部函数的函数,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我有一个函数,它根据在内部函数中传递的值返回布尔值。主父函数接受值,然后将这些值与内部函数中传递的值进行比较 function withinMiles(miles, max) { return (customer) => calculateMiles( customer.distance, miles.distance, ) <= max; } 但是,我得到了以下错误 expect(received).toBe(expected) //

我有一个函数,它根据在内部函数中传递的值返回布尔值。主父函数接受值,然后将这些值与内部函数中传递的值进行比较

function withinMiles(miles, max) {
  return (customer) =>
    calculateMiles(
      customer.distance,
      miles.distance,
    ) <= max;
}
但是,我得到了以下错误

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: [Function anonymous]

   8 | 
   9 | test("Users are within 500Miles", () => {
> 10 |   expect(withinMiles(250, 500)).toBe(true);
     |                               ^
  11 | });
  12 | 

  at Object.<anonymous> (app.test.js:10:31)
expect(received).toBe(expected)//Object.is相等
预期:正确
已收到:[匿名函数]
8 | 
9 |测试(“用户在500英里以内”,()=>{
>10 |期望(不超过250,500英里)为(真);
|                               ^
11 | });
12 | 
反对。(app.test.js:10:31)

withinMiles
返回一个函数,一个函数显然不等于布尔值
true

没有直接比较函数的好方法,因此需要使用
客户调用该函数才能通过测试:

expect(withinMiles(250, 500)(someCustomer)).toBe(true);

withinMiles
返回一个函数,而函数显然不等于布尔值
true

没有直接比较函数的好方法,因此需要使用
客户调用该函数才能通过测试:

expect(withinMiles(250, 500)(someCustomer)).toBe(true);

... 您(有点)回答了自己的问题--
withinMiles
的返回值是一个函数。您必须使用
customer
y对象调用该函数。它是返回布尔值的内部函数,而不是
withinMiles
。被误导性地命名为
的Within Miles
是一个函数生成器。它不仅是一个具有内部函数的函数,而且是一个高阶函数。这意味着内部函数仍然可以测试,而如果不返回它就不会是真的。。。。您(有点)回答了自己的问题--
withinMiles
的返回值是一个函数。您必须使用
customer
y对象调用该函数。它是返回布尔值的内部函数,而不是
withinMiles
。被误导性地命名为
的Within Miles
是一个函数生成器。它不仅是一个具有内部函数的函数,而且是一个高阶函数。这意味着内部函数仍然可以被测试,而如果不返回它就不会是真的。