jasmine.any(Function) 的一个使用场景
【摘要】 显然,Web 应用中某些功能比其他功能更容易测试。 例如,可以轻松测试纯函数,因为它的返回值对于相同的参数是相同的,并且它的评估没有副作用。 另一方面,一个 UI 组件(例如日历组件)可能有多个子组件、各种输入和输出,并且依赖于外部 API。 有时,很难说测试应该有多彻底。 在某些情况下,验证 happy path 可能就足够了。 在其他情况下,当它是关键软件部分时,您可能希望检查所有边缘情...
显然,Web 应用中某些功能比其他功能更容易测试。 例如,可以轻松测试纯函数,因为它的返回值对于相同的参数是相同的,并且它的评估没有副作用。 另一方面,一个 UI 组件(例如日历组件)可能有多个子组件、各种输入和输出,并且依赖于外部 API。 有时,很难说测试应该有多彻底。 在某些情况下,验证 happy path 可能就足够了。 在其他情况下,当它是关键软件部分时,您可能希望检查所有边缘情况。
在各种边缘情况的测试用例编写中,就是 jasmine.any(Function) 大显身手的时候。该函数的一个使用场景:
it(`should pass parameters to the original engine instance`, () => {
expect(originalEngineInstance).toHaveBeenCalledWith(
mockPath,
mockOptions,
jasmine.any(Function)
);
});
语义:
originalEngineInstance 被调用时,传递的第三个参数是任意的函数,即 jasmine.any(Function) 返回的引用。
但是,这个任意的函数,不能是 mockCallback.
it(`should apply optimization wrapper`, () => {
// we check, that callback is not the original one
expect(originalEngineInstance).not.toHaveBeenCalledWith(
mockPath,
mockOptions,
mockCallback
);
});
我们可以通过调试的方式,找到运行时第三个参数,实际是一个定义如下的函数:
而 jasmine.any(Function) 返回的引用,如下图绿色高亮区域所示:
真实被调用的 callback 是这个:
即代码228行指定的函数:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)