- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Storybook我需要让我的 React 组件的子组件停止执行 API 调用的设置。设置非常复杂,而且与问题无关,所以我只说我需要组件停止执行 API 调用。
我的最终目标是让子组件永远处于“加载状态”,因此
模拟服务器响应不是这里的解决方案。
我想出的方法是用 stub 的 Thunk Action 创建器替换我的 Thunk Action 创建器。类似于我们在 Jest 单元测试中所做的
// note that I'm using redux ducks: https://github.com/erikras/ducks-modular-redux
jest.mock('./ducks/students');
当然,上面的方法是行不通的,因为 Storybook 不能在 Jest 上运行。所以我目前的方法是使用 NormalModuleReplacementPlugin将真正的模块 ducks/students.js
替换为包含函数但主体为空的 stub ducks/stubs/students.js
:
// ./ducks/students.js
export const loadResources() = fetch('/resources');
export default (state, actions => {
// reducer's body
}
// ./ducks/stubs/students.js
export const loadResources() = Promise.resolve(); // STUBBED
export default (state, actions => {
// reducer's body
}
问题是我只需要对 thunk Action 创建者进行 stub ,文件中的其他所有内容(其他 Action 和 reducer)都需要相同。
这是我迄今为止考虑过的解决此问题的方法:
require.requireActual()
。原来这是一个 Jest 自定义函数,所以我不能在 Storybook 上使用它。理想情况下,我可以找到一种方法将实际模块中的所有内容导入 stub 模块,并导出 stub 函数和我需要的其余实际函数。
当我使用 NormalModuleReplacementPlugin
时,有什么想法可以从 stub 模块访问实际模块吗?
Tarun 关于仅模拟获取函数并返回 new Promise()
的建议适用于“无限期加载”的特殊情况。
但是,纵观全局,我仍然宁愿将所有 API 调用 stub ,这样我就可以通过修改 redux 状态来设置故事。
“但是你为什么不能直接模拟 JSON 响应呢?”我听到你问。 JSON 响应不一定是与应用程序域模型的一对一映射。我们有负责转换的映射器函数。
如果程序员可以仅使用领域模型知识来工作和设置测试用例,而不需要知道服务器响应 JSON 结构,我会更好。不用说,app redux store 结构就是领域模型。
所以我仍然需要一个关于在使用 NormalModuleReplacementPlugin
时如何从实际文件中请求的答案。
最佳答案
我还没有对此进行测试,但您可以通过聚合/重新导出模块语法并覆盖您的 loadResources()
函数来实现您想要的。
为此,将您的实际模块导入 ./ducks/stubs/students.js
,从该模块导出所有内容,然后定义/覆盖 loadResources()
和也导出它。然后,您可以像往常一样使用 NormalModuleReplacementPlugin
并将您的 stub 文件作为 newResource
传递,该文件将包含您希望与 thunk 一起保留的所有实际模块缩减器/操作覆盖并删除:
//ducks.stubs.students.js
export * from './ducks/students.js';
//override students.loadResources() with our stub
//order matters as the override must come after
//the export statement above
export const loadResources() = //some stubbed behavior;
//webpack.config.js
module.exports = {
plugins: [
new webpack.NormalModuleReplacementPlugin(
/ducks\.students\.js/,
'./ducks.stubs.students.js'
)
]
}
关于此解决方案的一些注意事项/注意事项/陷阱:
let
与const
(没什么大不了的)export * from
表达式不应处理 default
导出。因此,您可能必须添加 export { default } from './ducks/students.js';
。当然,请记住,您将无法导出 stub 文件的 native 默认函数(当然,除非您使用 stub 覆盖原始 default
函数)。关于javascript - 使用 NormalModuleReplacementPlugin 从实际文件中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795008/
我有两个维度 DimFlag 和 DimPNL 以及一个事实表 FactAmount 。我正在寻找:当 pnl 是 stat(Is Stat=1) 时:sum (Actual x FlagId)对于
我想对包含其部分内容的文本字段执行简单搜索,但我不知道从哪里开始。我基本上想要人们对“包含搜索”的期望。如果我在 issue 中搜索 345 ,我会想要这个结果: 123456 234567 3456
我在 VBE 的 C# 插件中有这段代码(强调“VBE”:它不是 MS-Office 插件): public abstract class HostApplicationBase : IHostApp
我有一个 ImageView,它显示来自资源的图像。ImageView 的宽度是固定的 (60dp)。高度设置为 wrap_content。调整图像大小以适合此宽度(节省宽高比 - 这很完美) 问题是
我正在建立一个网站,但遇到了一个问题:谷歌浏览器开发者工具中的背景以较低/较高的分辨率延伸。当我直接从手机打开网站时,背景不适合屏幕,只是“剪切”了背景。 这是网站:https://feargames
好吧,首先,这是 HTML 模板: ... ... ... ... 如您所见,页面位于标题下方,并且通过 JS 代码可见
我读到了 BK-trees (Burkhard-Keller-Trees) 几个月前,据说这是一种保存您想通过距离度量再次读取的内容的好方法。因此,在每种情况下,您都希望通过相似性检索某些内容。 然而
在 python 中,很容易根据字符数用空格填充字符串。例如: print "aaa".ljust(10) + "end" print "www".ljust(10) + "end" 输出是: aaa
我的问题不是特定于编程语言的,而是更通用的问题,以了解人们的思维方式。 通常在大型开发公司中,每项工作都有特定的角色,例如程序员和架构师。因此架构师的观点是拥有完美的架构师和解决方案设计,另一方面程序
我想将数据传递给 then 方法,但是当我通过给它 this.passedResolve 来执行此操作时,它会得到 undefined function Promises(callback){
我希望使用 Erlang/Elixir 在金融市场创建一个平台即服务。我将在金融市场提供 AWS lambda 风格的函数,但我计划向客户分发我自己的基于 ARM 的硬件终端(基于 Nvidia Je
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我已经看到很多代码,这些代码使用Runnable的循环时间来实现某些计时器/超时。问题是,如果有人决定更改此Runnable的循环时间,则计时器将不正确。 例: #define FOO_TIMER_1
当我将 WPF DataGrid 的 ColumnHeaderHeight 设置为 Auto (double.NaN) 时,如何获取列标题的实际呈现高度? 我似乎无法在 DataGrid 类中找到该属
目前最实用的png修复方法是什么?轻量级,支持背景重复和背景位置。 最佳答案 IE7.JS在我看来: IE7.js is a JavaScript library to make Microsoft
我已经进行了长时间的搜索并尝试了常见的嫌疑人,但现在是寻求帮助的时候了。 我的 Android Activity 非常愉快地从 SQLite 加载 EditText、Spinner 和 CheckBo
因此,我在 MySQL 全文中创建精确搜索时遇到了一些困难。 在我的数据库中,我正在尝试查找标题中包含特定关键字的职位。 所以我可以尝试 WHERE MATCH(jobTitle) AGAINST (
我正在尝试将 JavaScript 包含到一个表单应用程序中,该应用程序从现场收集施工数据。我已经用谷歌搜索了这个废话,但我无法弄清楚将 html 元素保存在数组中是否合法(或者我的语法是否正确)。
我知道有六种方法可以获取 session.save_path 指令的值(phpinfo()、session_save_path()等),但当值为空字符串时(默认情况下为空字符串),实际路径可以是多个位
我知道 npm 库在安装时可以在分层树中安装同一库的多个版本,如下所示: a@0.1.0 -> b@1.0 -> c@2.0 -> b@2.0 在上面,版本0.1.0的包a被拉入
我是一名优秀的程序员,十分优秀!