Karma:如何模拟在 HTML 中声明的全局变量?

4

我在HTML中声明了一个变量

<script>
    var actionUrl = '@Url.Action(action, "Designer")';
</script>

我希望能够在我想要测试的Javascript文件中调用变量actionUrl。然而,由于单元测试将每个文件隔离测试,因此在karma中,actionUrl变为未定义。我该如何模拟这个变量?有什么最佳实践吗?


通过在测试中定义它?var actionUrl ='whatever'; - JB Nizet
1个回答

6
  1. 建议通过调用window.actionUrl = 'whatever';
  2. 或者可能会有意义发明一些模拟对象的结构

unit-tests | mocks - | - module1.js ... | - moduleN.js | - globals.js

然后将所有全局对象放入globals.js中,并在karma.config.js内加载它。

编辑:添加了全局模拟对象到Angular Seed的分支 https://github.com/sbedulin/angular-js-dev-guide


我尝试在karma.config.js中定义变量,但测试仍然抱怨它未定义。我还在文件顶部和测试函数内部定义了它,但都失败了... - OZZIE
请检查我推送到 Angular Seed 项目分支的提交 https://github.com/sbedulin/angular-js-dev-guide/commit/d98a81355720e4ff595d8dedfb2cb170daa7bbd8 - sbedulin
嗨,@OZZIE,你是否已经尝试使用上述更改运行Angular种子测试? - sbedulin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接