2016-11-21 3 views
0

Попытка узнать некоторые Скала.Слишком много аргументов для конструктора

У меня есть следующие классы в моем проекте:

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]

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

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

+0

О, возможно, я переопределяю новый класс под названием AwsProvider и не расширяю его. – CodeMonkey

+2

Вы должны переименовать свой тестовый класс. – tkausl

+0

Да, это было :-) – CodeMonkey

ответ

2

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

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) 
    } 

} 

Сейчас она проходит.

Смежные вопросы