我想从一个Svelte组件中导出一个函数,并将其导入到一个Jest测试文件中进行测试。
基于this post的预期结果是:
// index.svelte
<script>
export function updateEnabledSubmitSignup(email, username, password, confirmedPassword) {
// ...
}
</script>
然后在我的测试文件中
import Signup from "../src/routes/signup/index.svelte"
describe("signup page logic", () => {
test("ensure that the signup form button enablement conditions work properly", () => {
console.log(Signup, "5rm")
const failureOne = Signup.updateEnabledSubmitSignup()
expect(failureOne).toBe(false)
})
})
但是运行这段代码
tests/signup.test.ts:6:31 - error TS2339: Property 'updateEnabledSubmitSignup' does not exist on type 'typeof SvelteComponentDev'.
6 const failureOne = Signup.updateEnabledSubmitSignup()
如果用Property 'updateEnabledSubmitSignup' does not exist on type 'typeof SvelteComponentDev'.
执行<script context="module">
,也会失败
如果尝试命名导入,如import { updateEnabledSubmitSignup } from "../src/routes/signup/index.svelte"
那么运行测试得到error TS2614: Module '"*.svelte"' has no exported member 'updateEnabledSubmitSignup'. Did you mean to use 'import updateEnabledSubmitSignup from "*.svelte"' instead?
有人知道如何做到这一点吗?This reddit post声称“您可以使用组件顶部的标记来导出函数。”但即使我这样做了,导入也失败了。
1条答案
按热度按时间fbcarpbf1#
从正则脚本导出的函数位于示例上,例如
从
context=module
脚本导出的函数称为文件的导出。如果您从中得到一个类型错误,那是因为您的工具没有正确地确定类型(它一般说
*.svelte
,而不是这个特定组件的具体类型)。问题是,为什么您的测试首先要进行类型检查。