gpt4 book ai didi

javascript - 如何用不同的输入测试一个函数

转载 作者:行者123 更新时间:2023-11-28 21:26:33 24 4
gpt4 key购买 nike

function addTwo (a, b) {
return a + b;
}

//Leave the function call
addTwo(50, 100);

我正在学习 React,我正在尝试创建一个 codecademy 类型的网站作为“学习项目”,但遇到了 JS 问题。

假设你有上面的功能,你如何测试不止一种情况?到目前为止,我正在测试:

eval(CODE PULLED IN HERE) === 150 ? alert('Correct!') : alert('Wrong!'); 

这显然会提醒 Correct,这对于这种情况是可以的。但是对于其他问题(甚至这个问题),我会想要不止一个测试用例,这就是我遇到的问题。

那么,我该如何测试多个测试用例,或者是否有其他方法可以实现我想要实现的目标?

非常感谢任何帮助/提示,​​

对于那些了解 React 的人来说,这里有一些代码可以让我了解一些我目前拥有的东西:

const CodeEditor = React.createClass({
getInitialState () {
var initialValue = [
"function addTwo () {",
" ",
"}",
"//Leave the function call",
"addTwo(50, 100);"
].join("\n");

return {
kataValue: initialValue
}
},
onChange (newValue) {
this.setState({kataValue: newValue});
},
evalCode () {
var val = this.state.kataValue
eval(val) === 150 ? alert('Correct!') : alert('Wrong!');
},
render () {
return (
<div className="code-editor-wrapper">
<AceEditor
name="editor"
mode="sh"
theme="chaos"
onChange={this.onChange}
value={this.state.kataValue}
editorProps={{$blockScrolling: true}}
/>
<button onClick={this.evalCode} className="spec-btn submit-code-btn">Evaluate</button>
</div>
)
}
})

最佳答案

不要在用户代码中包含函数调用。只要求函数以某种方式命名。不是直接评估用户的代码,而是嵌入到返回用户函数的函数中:

function getUserFunction(code, functionName) {
var userCode = new Function(code + '; return ' + functionName + ';');
return userCode();
}

在调用 getUserFunction 之后,您将获得对用户编写的函数的引用,并且可以根据需要随时执行它。如何构建测试用例以及要向用户提供多少反馈由您决定。

这是一个小例子:

var userFn = getUserFunction(this.state.kataValue, 'addTwo');
var testCases = [
[[50, 100], 150],
[[1, 2], 3],
];
var passes = testCases.every(
([input, output]) => userFn(...input) === output
);
if (passes) {
// all test cases pass
}

关于javascript - 如何用不同的输入测试一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com