我想测试一个控制器方法我在$范围。 该方法使一个异步调用,并得到一个承诺回来。 当承诺解决,结果被分配给在$范围的变量。
我试图想出测试很简单:null分配到$范围变量,调用该方法,等待调用完成,预计结果将被分配到$ scope变量。
出于某种原因,承诺永远不会消失。 见http://plnkr.co/edit/qxs5Y54NvhA24Fk4MPv2?p=preview
这里是控制器的方法:
$scope.getSomething = ->
someFactory.find().then (response) ->
$scope.newValues = response.data
现在,这是我怎样,我想测试一下:
it 'should get something', ->
scope.newValues = {}
scope.getSomething()
expect(scope.newValues.someData).toBeDefined()
对于单元测试的目的,我嘲笑“someFactory”使用它,只要我相信,当传递的对象,应该立即解决$ q.when()方法。 真的没有需要在这里等待。 这是模拟工厂:
mockSomeFactory = ($q) ->
{
find: ->
$q.when {someData: true}
}
并且将其注入控制器使用$提供:
beforeEach module 'myAngularApp', ($provide) ->
$provide.factory "someFactory", mockSomeFactory
return
我试图用茉莉花的运行,等待和waitsFor方法,但没有运气。 WaitsFor总是失败,即使经过5000毫秒。 见http://plnkr.co/edit/s2OL56jVCRK0Ecyycoz0?p=preview
没有人有此之前发生的呢?