Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 使用jest在其他文件中声明的测试函数_Javascript_Testing_Jestjs - Fatal编程技术网

Javascript 使用jest在其他文件中声明的测试函数

Javascript 使用jest在其他文件中声明的测试函数,javascript,testing,jestjs,Javascript,Testing,Jestjs,我在测试函数时遇到了一个问题。函数在app.js中定义,测试文件为app.test.js 如何导入函数,以便对其进行测试? 我的目标是只对函数进行单元测试,而不测试app.js中的所有其他内容 app.js const app = express() app.use(bodyParser.json()) const data = require('../shoppinglist/data.json') const baseUrl = '/api/v1/shoppingLists' module.

我在测试函数时遇到了一个问题。函数在app.js中定义,测试文件为app.test.js 如何导入函数,以便对其进行测试? 我的目标是只对函数进行单元测试,而不测试app.js中的所有其他内容

app.js

const app = express()
app.use(bodyParser.json())
const data = require('../shoppinglist/data.json')
const baseUrl = '/api/v1/shoppingLists'
module.exports = {app, client, listener, getNewestId}

function getNewestId(obj){
    let idArray = []
    for(let i = 0; i < obj.length; i++) {
        idArray.push(obj[i].id)
    }
    return Math.max(...idArray)
}

我想是需求/进口出了问题。但是我只能在这里使用require。

需要
getNewestId
函数,并像这样测试它:

const{getNewestId}=require(“./app”);
常数testData=[
{
“id”:1,
“名称”:“填写的购物清单”,
“位置”:“lidl”,
“目标日期”:“1986年3月22日”,
"优先":一,,
“isFinished”:false,
“物品”:[{“计数”:1,“名称”:“伏特加”},{“计数”:1,“名称”:“伏特加”}]
}, {
“id”:2,
“名称”:“填写购物清单2”,
“位置”:“lidl2”,
“目标日期”:“1986年3月22日”,
"优先":一,,
“isFinished”:false,
“物品”:[{“计数”:1,“名称”:“伏特加”},{“计数”:1,“名称”:“伏特加”}]
}
];
描述(“从有效数组获取新的ID”,()=>{
它(“应该返回id 3”,()=>{
expect(getNewestId(testData)).toEqual(3);
})
});

如果您想使用单元测试,请确保您测试的函数是正确的。在熟悉了这一点之后,考虑在其他级别上测试应用程序,例如编写将命中API的测试;p> 您能否尝试删除require调用和console.log中
app
周围的花括号?它给了您什么?
getNewestId
不是
app
的属性。另外,我不清楚你对这个代码的意图是什么。如果你想测试这个函数,你不应该模仿它。我只想测试这个函数
const appPath = '../src/app'
describe('getNewestId from Valid array', () => {
    it('should return id 3', async () => {
        jest.mock(shoppingListDataPath, () => [
            {
                "id": 1,
                "name": "filled shopping list",
                "location": "lidl",
                "targetDate": "22.03.1986",
                "priority": 1,
                "isFinished": false,
                "items": [{"count":1, "name": "vodka" }, {"count":1, "name": "vodka" }
                ]
            }, {
                "id": 2,
                "name": "filled shopping list2",
                "location": "lidl2",
                "targetDate": "22.03.1986",
                "priority": 1,
                "isFinished": false,
                "items": [{"count":1, "name": "vodka" }, {"count":1, "name": "vodka" }
                ]
            }
        ])
        const {app} = require(appPath)
        app.getNewestId = jest.fn()
        expect(app.getNewestId()).toEqual(200)
    })
})