angular - Jasmine JS 理解全局上下文
问题描述
我有一个关于 Jasmine 如何实际处理全局上下文的问题。在 api 文档中,类似的方法beforeEach(),afterEach(), etc
被描述为全局。因此,在.
Jasmine 识别它们时,它们在没有运算符的情况下被调用。
我有以下简单的课程:
export class VoteComponent {
totalVotes = 0;
upVote() {
this.totalVotes++;
}
downVote() {
this.totalVotes--;
}
}
并测试以下规范,它工作正常:
import { VoteComponent } from './vote.component';
describe('VoteComponent', () => {
let Votes :VoteComponent;
beforeEach(()=>{
Votes = new VoteComponent();
})
it('Upvotes', () => {
Votes.upVote();
expect(Votes.totalVotes).toBe(1);
});
it('Downvotes', () => {
Votes.downVote();
expect(Votes.totalVotes).toBe(-1);
});
});
但是,如果我将规范更改为如下所示:
// let Votes :VoteComponent;
beforeEach(()=>{
let Votes = new VoteComponent();
})
我收到以下错误:
Chrome 67.0.3396 (Windows 10.0.0) VoteComponent Upvotes FAILED ReferenceError: Votes is not defined
我不明白这是为什么。beforeEach() 是一个全局上下文函数,在每个规范之前被调用。但即便如此,Votes
除非在 beforeEach() 之外实例化,否则在规范中也无法识别。
为什么是这样?我正在使用 Angular-6、Karma 1.7 和 Jasmine 2.9
解决方案
推荐阅读
- javascript - 创建一个新数组,计算某个参数在数组中出现的次数
- gf - 变体无法在 GF 上编译
- eclipse - 将 IntelliJ 中的运行配置迁移到 Eclipse 运行配置
- git - 如何在git中更改父节点?
- java - Java-Android 如何将两个字符串与旧保存的数据进行比较
- javascript - Angular http.post,没有得到响应,总是得到响应为空
- javascript - React 路由器,一个无处可去的链接
- powerbi - 如何从 Power BI 中的日期列创建开始和结束日期列?
- artifactory - Jfrog Artifactory - 德比问题
- javascript - discord.js V12 主题变更