Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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_Promise_Mocha.js_Chai - Fatal编程技术网

Javascript 测试承诺而不必模仿决议?

Javascript 测试承诺而不必模仿决议?,javascript,unit-testing,promise,mocha.js,chai,Javascript,Unit Testing,Promise,Mocha.js,Chai,我遇到了一个小问题。我想为一个返回承诺的函数做一个通用的单元测试,而不必模拟函数的内部是如何实现承诺的 例: 我有一个通过测试的套件,模拟的$.ajax获得了成功,但是由于上面的代码将来可以重构,我希望在测试中保持通用性,并确保无论内部实现如何,该函数始终返回承诺 你能提供你的测试代码吗?这将解释你到底要测试什么以及如何测试。如果您能分享您对doGet()实现中您预期会发生什么样的更改的想法,这也会很有帮助。@igorsolydenko我得出结论,这个函数,无论是否已解决,都需要返回一个承诺。我

我遇到了一个小问题。我想为一个返回承诺的函数做一个通用的单元测试,而不必模拟函数的内部是如何实现承诺的

例:


我有一个通过测试的套件,模拟的$.ajax获得了成功,但是由于上面的代码将来可以重构,我希望在测试中保持通用性,并确保无论内部实现如何,该函数始终返回承诺

你能提供你的测试代码吗?这将解释你到底要测试什么以及如何测试。如果您能分享您对
doGet()
实现中您预期会发生什么样的更改的想法,这也会很有帮助。@igorsolydenko我得出结论,这个函数,无论是否已解决,都需要返回一个承诺。我将进行一个简单的测试,简单地检查函数是否返回承诺。回答您关于未来重构的问题。由于这是一个较旧的
js
实现,不可避免地会更新为更现代的
js
,因此我们可以利用
fetch
之类的功能来消除对
jquery
的依赖。因此,不将测试绑定到特定的实现是很重要的。您能提供测试的代码吗?这将解释你到底要测试什么以及如何测试。如果您能分享您对
doGet()
实现中您预期会发生什么样的更改的想法,这也会很有帮助。@igorsolydenko我得出结论,这个函数,无论是否已解决,都需要返回一个承诺。我将进行一个简单的测试,简单地检查函数是否返回承诺。回答您关于未来重构的问题。由于这是一个较旧的
js
实现,不可避免地会更新为更现代的
js
,因此我们可以利用
fetch
之类的功能来消除对
jquery
的依赖。因此,不将测试与具体实现联系起来是很重要的。
function doGet(opts) {
 return new Promise((resolve, reject) => {
    const ajaxOptions = extend({}, {
        type: 'GET',
        headers: sampleHeaders,
        success: (data) => {
            resolve(data);
        },
        error: (xhr) => {
            reject(xhr.responseText);
        }
    }, opts);

    $.ajax(ajaxOptions);
 });
}