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);
});
}