Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
Typescript 使tsconfig引用所有导出的变量(用于测试mock/spy/stub)_Typescript - Fatal编程技术网

Typescript 使tsconfig引用所有导出的变量(用于测试mock/spy/stub)

Typescript 使tsconfig引用所有导出的变量(用于测试mock/spy/stub),typescript,Typescript,我有这样一个文件: import Foo from 'Foo.tsx'; export const useGroupIds = () => []; export default function GroupItem() { const groupIds = GroupItemModule.useGroupIds(); return <FooModule.default /> } import * as FooModule from './Foo'; import

我有这样一个文件:

import Foo from 'Foo.tsx';

export const useGroupIds = () => [];

export default function GroupItem() {
  const groupIds = GroupItemModule.useGroupIds();
  return <FooModule.default />
}
import * as FooModule from './Foo';
import * as GroupItemModule from './GroupItem';

jest.spyOn(FooModule, 'default')
jest.spyOn(GroupItemModule, 'useGroupIds')
Foo.tsx:

export default function Foo() {
   return 'hi';
}
GroupItem.tsx:

import Foo from 'Foo.tsx';

export const useGroupIds = () => [];

export default function GroupItem() {
  const groupIds = useGroupIds();
  return <Foo />
}
所以现在当我这样嘲笑的时候:

import Foo from 'Foo.tsx';

export const useGroupIds = () => [];

export default function GroupItem() {
  const groupIds = GroupItemModule.useGroupIds();
  return <FooModule.default />
}
import * as FooModule from './Foo';
import * as GroupItemModule from './GroupItem';

jest.spyOn(FooModule, 'default')
jest.spyOn(GroupItemModule, 'useGroupIds')

然后将正确调用spied函数。

在您的实现中有什么
GroupItemModule.UseGroupId
?您可以使用它而不是本地
usegroupId
。这是故意的吗?@AluanHaddad谢谢你的回复。这就是我希望TS也能传输的示例。我希望它以这种方式调用每个导出。而不是通过上下文/范围捕获它,因为这样,即使在spy/stub之后,
default
export中的用法也引用了原始(因此spied/stubbed永远不会被调用)类型,当然不会在导出该名称空间的成员的模块内合成名称空间,以便您可以引用它。考虑到闭包的性质,这也是一个相当不连贯的请求。这不会有任何区别。@AluanHaddad webpack会通过导出来实现这一点。它将其命名到模块上。我知道导出是如何通过webpack传输的。这不相关。