【发布时间】:2015-01-19 14:27:07
【问题描述】:
我正在使用 angular-translate 翻译一个应用程序,但无法修复我的测试套件。
之前 - 控制器看起来像:
$scope.$on 'new-fetch-controller:step-2', ->
if EmailUtils.validate(self.contributorEmail)
ToastService.show "Did you forget to add #{self.contributorEmail}?", 3
self.addEmail(self.contributorEmail
之前 - 测试看起来像:
beforeEach inject ($injector) ->
mockService = $injector.get 'ToastService'
it 'calls toast service on adding email', ->
showSpy = @sinon.spy(mockService, 'show')
basics.contributorEmail = "test@test.com"
newFetchScope.nextStep()
expect(showSpy).to.have.been.calledWith("Did you forget to add test@test.com?", 3)
之后,控制器看起来像(注意对 ToastService 的调用现在是在 promise 的 then 中):
$scope.$on 'new-fetch-controller:step-2', =>
if EmailUtils.validate(@contributorEmail)
$translate('fetches.new.contributors.auto_added', {email: @contributorEmail}).then (translation) ->
ToastService.show translation, 3
@addEmail(@contributorEmail)
现在测试失败了:
Failure/Error: expected show to have been called at least once, but it was never called
如何修正我的测试?
【问题讨论】:
标签: angularjs promise sinon angular-translate