RSpec – 基本语法

RSpec – 基本语法


让我们仔细看看我们的HelloWorld示例的代码首先,如果不清楚,我们正在测试HelloWorld的功能这当然是一个非常简单的类,只包含一个方法say_hello()

这是 RSpec 代码 –

describe HelloWorld do 
   context “When testing the HelloWorld class” do 
      
      it "The say_hello method should return 'Hello World'" do 
         hw = HelloWorld.new 
         message = hw.say_hello 
         expect(message).to eq "Hello World!" 
      end
      
   end 
end

描述关键字

描述这个词是一个 RSpec 关键字。它用于定义“示例组”。您可以将“示例组”视为测试的集合。描述的关键字可以采取一个类名和/或字符串参数。您还需要传递一个块参数来描述,这将包含单个测试,或者它们在 RSpec 中称为“示例”。该块只是由 Ruby do/end关键字指定的 Ruby 块

上下文关键字

上下文关键字类似描述它也可以接受类名和/或字符串参数。您也应该使用带有上下文的块上下文的想法是它包含某种类型的测试。

例如,您可以指定具有不同上下文的示例组,如下所示 –

context “When passing bad parameters to the foobar() method” 
context “When passing valid parameters to the foobar() method” 
context “When testing corner cases with the foobar() method”

上下文关键字是不是强制性的,但它有助于增加约它所包含的示例的更多细节。

it 关键字

是被用来定义一个“实施例”另一个RSpec的关键字。一个例子基本上是一个测试或一个测试用例。同样,像describecontext 一样,它接受类名和字符串参数,并且应该与块参数一起使用,用do/end指定的情况下,习惯上只传递一个字符串和块参数。字符串参数经常使用“应该”这个词,用来描述在it 块中应该发生什么特定的行为换句话说,它描述了示例的预期结果。

请注意我们的 HelloWorld 示例中it 块

it "The say_hello method should return 'Hello World'" do

该字符串清楚地表明当我们在 HelloWorld 类的实例上调用 say hello 时会发生什么。RSpec 哲学的这一部分,一个例子不仅仅是一个测试,它也是一个规范(一个规范)。换句话说,一个示例既记录并测试了 Ruby 代码的预期行为。

期望关键字

预期关键字用来定义的RSpec的“期待”。这是我们检查特定预期条件是否已满足的验证步骤。

从我们的 HelloWorld 示例中,我们有 –

expect(message).to eql "Hello World!"

使用expect语句的想法是它们读起来像普通英语。您可以大声说“期望变量消息等于字符串’Hello World’”。这个想法是它的描述性和易于阅读,即使对于非技术利益相关者(如项目经理)也是如此。

The to keyword

关键字作为的一部分预期的陈述。请注意,当您希望期望为假时,您也可以使用not_to关键字来表达相反的意思。您可以看到 to 与一个点一起使用,expect(message).to,因为它实际上只是一个常规的 Ruby 方法。事实上,所有的 RSpec 关键字都只是 Ruby 方法。

The eql keyword

EQL关键字是一种特殊的RSpec的关键字而称为匹配器。您可以使用匹配器来指定您要测试的条件类型为真(或假)。

在我们的 HelloWorld expect语句中,很明显eql表示字符串相等。请注意,Ruby 中有不同类型的相等运算符,因此 RSpec 中有不同的对应匹配器。我们将在后面的部分探讨许多不同类型的匹配器。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁