Как создать TestActorRef внутри тестового класса. В частности, я следующий тест создан ...Как создать TestActorRef внутри тестового класса для актера с параметрами конструктора?
class MatchingEngineSpec extends TestKit(ActorSystem("Securities-Exchange"))
with FeatureSpecLike
with GivenWhenThen
with Matchers {
val google = Security("GOOG")
val ticker = Agent(Tick(google, None, None, None))
val marketRef = TestActorRef(new DoubleAuctionMarket(google, ticker) with BasicMatchingEngine)
val market = marketRef.underlyingActor
... когда я запускаю тесты все проходит, но после выключения ActorSystem я получаю этот длинный след ошибки ...
[ERROR] [03/10/2015 15:07:55.571] [Securities-Exchange-akka.actor.default-dispatcher-4] [akka://Securities-Exchange/user/$$b] Could not instantiate Actor
Make sure Actor is NOT defined inside a class/trait,
if so put it outside the class/trait, f.e. in a companion object,
OR try to change: 'actorOf(Props[MyActor]' to 'actorOf(Props(new MyActor)'.
akka.actor.ActorInitializationException: exception during creation
Я наткнулся на this Предыдущий вопрос, но принятый ответ не работал для меня в этом случае.
В случае необходимости, здесь определение DoubleAuctionMarket
актера ...
class DoubleAuctionMarket(val security: Security, val ticker: Agent[Tick]) extends Actor with ActorLogging {
this: MatchingEngine =>
...
Как ваш 'DoubleAuctionMarket' актер определено? – vptheron
Я обновил вопрос, чтобы включить информацию о актере DoubleAuctionMarket. – davidrpugh
Вы пробовали без «на лету» mixin 'BasicMatchingEngine'? Я не вижу ничего плохого в вашем коде и использовании 'TestActorRef'. – vptheron