Слишком много аргументов для конструктора

Пытаюсь немного изучить Scala.

В моем проекте есть следующие классы:

package com.fluentaws

class AwsProvider(val accountId: String, val accountSecret: String) {

 def AwsAccount = new AwsAccount(accountId, accountSecret)

}

class AwsAccount(val accountId : String, val accountSecret : String) {

}

И следующий тест:

package com.fluentaws

import org.scalatest._

class AwsProvider extends FunSuite {

  test("When providing AwsProvider with AWS Credentials we can retrieve an AwsAccount with the same values") {

    val awsAccountId = "abc"
    val awsAccountSecret = "secret"

    val awsProvider = new AwsProvider(awsAccountId, awsAccountSecret)

    val awsAccount = awsProvider.AwsAccount

    assert(awsAccount.accountId == awsAccountId)
    assert(awsAccount.accountSecret == awsAccountSecret)
  }

}

Когда мой набор тестов запускается, я получаю ошибку времени компиляции:

too many arguments for constructor AwsProvider: ()com.fluentaws.AwsProvider [error] val awsProvider = new AwsProvider(awsAccountId, awsAccountSecret) [error]

Из сообщения об ошибке похоже, что он видит конструктор с нулевыми параметрами?

Может ли кто-нибудь увидеть, что я здесь делаю не так?

# tdd constructor classname
Источник
  • 0
    О, может быть, я переопределяю новый класс под названием AwsProvider и не расширяю существующий
  • 2
    Вам следует переименовать свой тестовый класс.
  • 0
    Да, вот и все :-)
Codelisting
за 3 против
Лучший ответ

Это была типичная ошибка новичков. Я исправил имя своего тестового класса, потому что использование того же имени затеняет исходное имя, в результате чего я фактически тестировал свой тестовый класс:

package com.fluentaws

import org.scalatest._

class AwsProviderTestSuite extends FunSuite {

  test("When providing AwsProvider with AWS Credentials we can retrieve an AwsAccount with the same values") {

    val awsAccountId = "abc"
    val awsAccountSecret = "secret"

    val awsProvider = new AwsProvider(awsAccountId, awsAccountSecret)

    val awsAccount = awsProvider.AwsAccount

    assert(awsAccount.accountId == awsAccountId)
    assert(awsAccount.accountSecret == awsAccountSecret)
  }

}

Теперь это проходит.

Codelisting
Популярные категории
На заметку программисту