当前位置: 首页 > 知识库问答 >
问题:

获取Behat@beforeSuite中的base_url

雷锋
2023-03-14

我正在使用Behat和Mink来测试一个使用Laravel框架的应用程序,并且我想在运行测试之前使用Artisan来设置数据库。

为了正确配置Artisan,我需要知道将要测试的域,因此需要使用哪个Laravel环境。这在behat.yml中所使用的各种配置文件下列出。例如:

default:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: http://www.example.com
            ...
daniel:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: http://example.dev

是否可以从@beforeSuite中获取base_url的值?

这里的主要问题似乎是@beforeSuite必须是静态的,因此不能访问Mink,所以我不能只使用$this->getMinkParameter('base_url')

共有1个答案

解宏扬
2023-03-14

有些钩子的工作方式真让我抓狂。在上下文被实例化之前,这些参数不会被传递,因此在实际创建之前,没有一种简单的方法可以在上下文中获取这些参数。最好的做法是使用@beforescenario事件和databaseReady标志,如下所示:

protected static $databaseReady;

/**
 * @BeforeScenario
 */
public function setupDatabase()
{
    if (!self::$databaseReady) {

        // Set it up…

        self::$databaseReady = true;
    }
}

但是我不知道在Laravel中是如何完成的,但是大多数框架都有一个配置和引导程序,包括针对不同环境的配置和引导程序。最好将这些东西保留在那里,然后使用引导脚本(可以从@beforeSuite钩子运行)来设置环境,包括数据库。

 类似资料:
  • Behat 是个行为驱动的开发(BDD)框架,可以测试业务期望,允许用户编写便于人们阅读的故事驱动代码,描述该应用应该怎样工作。任何人都能快速简单的掌握它的使用方法。

  • 我正在尝试安装behat+mink(在kohana框架上,而不是symfony,我将behat放入modules文件夹--我写这个只是以防万一,但我猜这不是导致我的问题的原因)。 我拥有与behat文档中相同的search.feature文件,我将features/bootstrap类更改为: 当我在CLI中键入“Behat”时,我会得到以下错误:在第80行调用....RawminkContext

  • 我使用Selenium进行自动浏览器测试已经有相当一段时间了。除了Firefox,我从来没有想过如何让它在其他任何东西上运行。好吧,现在FireFox将启动,但不会被拉到前面,它只是坐在那里,什么也不做。我觉得这是因为FireFox更新了自己。 我在运行MacOS塞拉。我已经安装并启用了WebDriver 2.48扩展到Safari。 我已经下载并尝试了selenium-server-standa

  • 我试图在方法中为我的testNG测试延迟init变量(服务),如下所示: 我的测试如下所示:

  • 我正在运行一个使用TestNG作为测试框架的Spring Boot应用程序。我的测试是这样设置的: 父类,负责设置逻辑并负责所有配置内容: 有多个子测试类。每个on继承父测试类,因此它们共享相同的设置逻辑。 问题是:以前我使用的是注释,这意味着父类的设置方法为每个子测试类运行一次。这是可以的,但等待相同的设置运行多次确实很慢。 所以我想:我将把ParentTestClass中的注释改为!那会解决我

  • 问题内容: 首先,我很清楚Xcode 6和Swift语言是Beta版本,容易出错。但是,这一特定功能似乎有些奇怪,因为到目前为止我尝试过的所有其他功能似乎都可以正常工作。 如果这不适合StackOverflow,我将很乐意删除该问题。 我已经开始使用Xcode 6 / Swift(为发布做准备),与我想的相比,这是一种非常愉快的体验。话虽如此,在移植我喜欢做的“训练”风格的应用程序时,一个问题是由