如何使用新方案展开“启动”任务

问题描述 投票:0回答:1

我刚刚了解了serenity-js并且正在试一试。我正在按照教程并注意到以下示例:

james.attemptsTo(
    Start.withAnEmptyTodoList(),
    AddATodoItem.called('Buy some milk')
)

Start的任务:

export class Start implements Task {

    static withATodoListContaining(items: string[]) {       // static method to improve the readability
        return new Start(items);
    }

    performAs(actor: PerformsTasks): PromiseLike<void> {    // required by the Task interface
        return actor.attemptsTo(                            // delegates the work to lower-level tasks
            // todo: add each item to the Todo List
        );
    }

    constructor(private items: string[]) {                  // constructor assigning the list of items
    }                                                       // to a private field
}

我非常喜欢这种语法,并希望通过更多的启动方案继续这种设置。实现这一目标的正确方法是什么?

serenity-bdd serenity-js
1个回答
0
投票

对于任何有相同问题的人来说,这就是我如何解决它的问题(通过serenity-js repo找到类似的设置):

// Start.ts
export class Start {
    public static withATodoListContaining = (items: string[]): StartWithATodoListContaining => new StartWithATodoListContaining(items);
}

// StartWithATodoListContaining.ts
export class StartWithATodoListContaining implements Task {

    static withATodoListContaining(items: string[]) {       
        return new StartWithATodoListContaining(items);
    }

    performAs(actor: PerformsTasks): PromiseLike<void> {    
        return actor.attemptsTo(                            
            // todo: add each item to the Todo List
        );
    }

    constructor(private items: string[]) {                  
    }                                                       
}
© www.soinside.com 2019 - 2024. All rights reserved.