0

我们在 angularjs 中使用 karma 和 mocha 进行单元测试。但是我们在测试我们的 $locale 东西时遇到了问题,比如日期格式。

我们有三个测试,是否为每个测试重新创建 $locale ?如果我在这些测试中使用服务,我的服务是否也会重置,或者测试 1 是否可能会影响测试 2,因为我的服务包含一些数据?

这是一个代码片段:

it 'should format currency in german', ->
  inject (localizer, $filter) ->
    localizer 'de'
    expect($filter('currency') 5125, '€').to.be.equal '5.125,00 €'
    expect($filter('currency') 5, '€').to.be.equal '5,00 €'
    expect($filter('currency') .51, '€').to.be.equal '0,51 €'
    expect($filter('currency') 0.515, '€').to.be.equal '0,52 €'

it 'should format date in german', ->
  inject (localizer, $filter) ->
    localizer 'de'
    myDate = new Date 2015,5,22
    expect($filter('date') myDate,'shortDate').to.be.equal '22.06.15'

  app.service 'localizer', ($locale, locales) -> (currentLocale) ->
    console.log("Seting currentLocale to:"+currentLocale+"| lastLocale:"+lastLocale)
    if currentLocale isnt lastLocale
      console.log("currentLocale is now:"+currentLocale)
      lastLocale = currentLocale
      localeData = locales[currentLocale]
      angular.extend $locale.DATETIME_FORMATS, localeData.DATETIME_FORMATS
      angular.extend $locale.NUMBER_FORMATS, localeData.NUMBER_FORMATS

问题是,如果在使用 'de' 的测试之后再次在 $locale 中使用 'de' 的测试是英文格式值。如果我在第二个定位器“de”之前放置一个定位器“tr”,它就可以工作。为什么 $locae 的值会发生变化?是否可以 A) 防止 $locale 更改或 B) 在每次测试之前重置我的服务。

4

0 回答 0