angular js 中 directive/service 的单元测试销毁方法

Unit testing destroy method on directive/service in angular js

我有一些注册观察员的指令和服务。我想确保在调用 destroy 方法时删除所有观察者。有没有办法确保是这种情况?

首先,我认为您应该在 destroy 方法上创建一个 spy,以确保它被调用。

spyOn(YourService, 'destroy').and.callThrough();
expect(YourService.destroy).toHaveBeenCalled();

这样可以确保您的销毁函数已被调用,现在对于观察者部分,您可以使用此 Whosebug 答案中描述的代码 () or in this blog entry (https://medium.com/@kentcdodds/counting-angularjs-watchers-11c5134dc2ef)。

这些提供了计算您当前使用的观察者数量的方法。你应该期望它在 destroy 方法被调用后为 0。