请参阅此plunkr以获取实例:http://plnkr.co/edit/djQPW7g4HIuxDIm4K8RC
在下面的代码中,行var promise = serviceThatReturnsPromise();
在模块配置期间运行,但我想模拟服务返回的承诺。
理想情况下,我会使用$q
服务来创建模拟承诺,但我不能这样做因为serviceThatReturnsPromise()
在模块配置期间执行,然后才能访问{{1 }}。解决鸡肉和鸡蛋问题的最佳方法是什么?
$q
答案 0 :(得分:2)
我不确定我是否更喜欢这个解决方案,但现在是:
http://plnkr.co/edit/uBwsJxJRjS1qqsKIx5j7?p=preview
您需要确保在之后设置所有内容时不实例化“serviceUnderTest”。因此,我将第二个beforeEach
分成两个单独的部分:第一个实例化并使用$q
,第二个实例化并使用serviceUnderTest
。
我还必须包含$rootScope
,因为Angular的承诺旨在使用$apply()
方法。
希望有所帮助。