Day19 测试写起乃 - 撰写Cucumber

昨天讲了安装 Cucumber 以及基本语法今天我会拿一些范例来看看是如何写的!

基本上每一句语句都会对应到一个建立的程序码通常会搭配 FactoryBot 使用,我们会整理在features/step_definitions/integration.rb

假设我写了 我开了一家店 那在专案中一定会看到有一处是

假如('我开了一家店') do
  # 这边会产出一间店
end

规格书:

# language: zh-TW

@javascript @chrome @integration
功能: 结帐功能-商品限量购买
  背景: 我有一家店
    假如 我开了一家店
    而且 新增了一个运送方式
    而且 新增了一个付款方式
    而且 有一个顾客"CK"
    而且 商家有以下资料的商品
    | id | title    | price   |
    | 1  | 红茶      | 100     |
    而且 商家有以下限购群组
    | id | title   | limit_count |
    | 1  | 限购红茶 | 2           |

  场景: 购买一般商品超过限购数量
    假如 使用"CK"顾客帐号登入
    而且 我在商品列表页
    当 我选择"红茶"加入购物车,数量为3
    而且 进入结帐页面
    而且 完成结帐
    那麽 我会收到"「红茶」最多只能购买 2 个。现在购物车中有 3 个。"而无法购买

  场景: 购买一般商品没有超过限购数量可以结帐成功
    假如 使用"CK"顾客帐号登入
    而且 我在商品列表页
    当 我选择"红茶"加入购物车,数量为1
    而且 进入结帐页面
    而且 完成结帐
    那麽 我会跳转到订单页

我们可以看到这份规格书 背景是 "我有一家店"

那麽可以知道我们必须要先新增一个 shop 而且 付款跟运送方式还有商品跟限购群组都要先建立出来才可以测试,也能告诉客户这边会使用到这些相关功能,而程序码像是:

#假如 我开了一家店
假如('我开了一家店') do
  @shop = FactoryBot.create(:user_admin).shop
  end
  
#而且 新增了一个运送方式
而且('新增了一个运送方式') do
  FactoryBot.create(:price_based_shipping_rate, shipping_id: @shop.shipping.id)
end

那也会看到有些语句有使用 "" 包起来 其实就是变数的意思,可以随意带值进去并且在程序码中使用{string} 接起来,数字的话就用{int}

#  当 我选择"红茶"加入购物车,数量为1
当('我在商品页选择{string}加入购物车,数量为{int}') do |title, quantity|
  add_product_to_cart(title, quantity)
end

当我们写完一份规格书之後可以在终端机测试搂!

cucumber features/integration/checkout/limit_buy.feature


<<:  Day05: 05 - Django架构规划、资料库规划、商品资料准备

>>:  第 4 天 英雄有偶包怎麽办|*ngFor、JsonPipe、Angular Material、Mat-Card、Mat-Button

Day26:救世主

在资料输入输出原本Java提供了java.io套件来给开发者使用,不过都是面对Byte[]的操作,在...

【额外分享】How To Test The Smart Contract Of iParking NFT With Foundry

tags: swfLAB ⚠️ Of course this is only my personal...

awk - 简介 Linux 制表好工具

awk Linux文字处理工具中, 有另一个杀器awk 但awk是个程序语言, 所以它很灵活且功能强...

[火锅吃到饱-2]【蓝象廷泰锅-台中新时代店】泰式火锅吃到饱 #用手机一样可以拍出优质照片+影片~

舒安表示:我的手机是有高画质的,不过这影片的4K片段是用相机拍出来的。 半年前,在蓝象廷用餐时,因为...