php - 将 dataProviders 数据传递给设置 [PHPUnit]
问题描述
我第一次尝试让 PHPUnit 工作;我想将数据传递给 TestCasesetUp()
方法,以便我可以为每个测试创建一个新实例。当我写...
protected $furniture;
/**
* Instantiate an instance of Furniture for use with all test methods not involved with class constructor objectives
* @dataProvider validConstructorArgumentProvider
*/
protected function setUp($sku, $name, $price, $dimensions) : void
{
$this->furniture = new Furniture($sku, $name, $price, $dimensions);
}
在我上课的开始,然后测试运行错误:
ArgumentCountError: Too few arguments to function WebApp\tests\FurnitureTest::setUp(), 0 passed in /Users/ScottAnderson/Documents/Tech/commissions/shopping_app_test/vendor/phpunit/phpunit/src/Framework/TestCase.php on line 1024 and exactly 4 expected
我已经注意到这一点:
所有数据提供者都在调用 setUpBeforeClass() 静态方法和第一次调用 setUp() 方法之前执行。因此,您无法从数据提供者中访问您在那里创建的任何变量。为了使 PHPUnit 能够计算测试的总数,这是必需的。
我指定的数据提供者如下所示:
private function validConstructorArgumentProvider()
{
return [
["TBL11FN", "Table", 60.0, [120, 50, 70]],
["CBN33FN", "Cabinet", 70.0, [60, 120, 210]],
["DSK5FN", "Desk", 55.0, [180, 70, 70]],
["PCT102FN", "Picture Frame", 13.0, [60, 40, 4]],
["LMP40FN", "Lamp Shade", 9.0, [40, 40, 25]]
];
}
...所以也许无法将 dataProvider 参数提供给setUp()
,但在这种情况下,我真的不明白每个测试方法设置函数的意义是什么。是否可以将参数从 dataProvider 传递给`setUp()?
注意:我已经看到了这个,但我已经按照最喜欢的答案的步骤进行操作,但我仍然没有任何运气
解决方案
无法将数据从数据提供者传递到setUp()
.
推荐阅读
- javascript - 不要使用 util.inspect 记录符号
- android - 如何检查mysql数据库中的值?
- javascript - 如何在 wordpress 网站上隐藏外部 java sciprt 代码的图像
- reactjs - GraphQL Apollo:变量 $bool 的值无效“false”;预期的布尔类型;布尔值不能表示非布尔值:“false”
- sql - 如何更改列的数据类型并在 SQL 中添加外键?
- ruby-on-rails - RAILS_ENV=production rails assets:precompile - ruby_racer_runtime.rb:73: 分段错误
- java - 我正在尝试在我的 android 应用程序中添加一个微调器
- sql - 从 2 个 SELECT 中获得差异
- android - D/BluetoothLeScanner:每隔几秒自动停止扫描
- machine-learning - PCA 与平均列