【问题标题】:Testing with a metaoperator doesn't print the test description使用元运算符进行测试不会打印测试描述
【发布时间】:2020-03-30 01:21:14
【问题描述】:

我在复杂数组上编写测试,当我注意到缺少测试描述时,我正在使用 Z≅ 运算符检查数组是否大致相等。
我试图打出一段代码来找出显示我看到的结果的最简单的情况。即使我使用 Num 或 Int 变量和 Z== 运算符,第二个测试中也缺少描述。

use Test;

my @a = 1e0, 3e0;
my @b = 1e0, 3e0;
ok @a[0] == @b[0], 'description1';     # prints: ok 1 - description1
ok @a[^2] Z== @b[^2], 'description2';  # prints: ok 2 -

done-testing;

有简单的解释还是这是一个错误?

【问题讨论】:

  • 请注意,测试:ok @a[^2] Z== @b[^2] 是假的,因为它总是没问题。因为您实际上是在测试结果中的元素数量,它始终是产生 2 个值的 Seq。您需要检查Seq 的所有值是否都是True,例如通过ok [&&] @a[^2] Z== @b[^2]

标签: testing raku


【解决方案1】:

这只是优先级——你需要括号。

== 是一个二元运算,它的每一边都有一个单个操作数

Z 元操作将其运算符分配到任一侧的一个列表

use Test;

my @a = 1e0, 3e0;
my @b = 1e0, 3e0;
ok  @a[0]   == @b[0],   'description1';  # prints: ok 1 - description1
ok (@a[^2] Z== @b[^2]), 'description2';  # prints: ok 2 - description2

done-testing;

如果没有括号,'description2' 将成为右侧列表的附加元素。根据the doc for Z

如果其中一个操作数过早地用完元素,则 zip 运算符将停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2011-10-30
    • 1970-01-01
    • 2014-03-28
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多