[英]What testing approach should I use?
我正在測試一個非常復雜的報價工具,我需要測試折扣保證金價格和折扣價格。 假設目錄中的價格為 100 美元,而合作伙伴獲得 25% 的折扣,則合作伙伴價格為 75 美元
我應該這樣測試 -> cy.get(partnerPriceField)/should('have.value', 75)
或 -> cy.get(partner PriceField)/should('have.value', catalogPrice * (1-discount/100))
cy.get(partnerPriceField).should('have.value', 75)
是 e2e 測試的首選。
測試計算的工作屬於單元測試,它們接近源代碼,因此如果/當 src 計算發生變化時,可以更改測試。
e2e 測試的工作是確保給定一些輸入數據,頁面顯示輸出數據(黑框)。
輸入和輸出最好在一個夾具表中提供,當計算被修改時,該表很容易調整。
您可以使用.contains()
傳遞一個正則表達式,然后是一個斷言以檢查該值是否可見。
const fullPrice = 100
const discount = .25
const discountPrice = fullPrice * discount
const regexMatcher = new RegExp(`$${discountPrice}`) // equals /\$75/
cy.contains('.selector-containing-price-text', regexMatcher)
.should('be.visible')
我建議您使用第二個選項,因為在這種情況下,如果將來catalog price
或discount value
發生變化,您不必更改邏輯,因為它是通用的。 話雖如此,要使第二個選項起作用,您必須首先將 catalogPrice 和折扣更改為數字,然后在計算之后,您必須將最終答案轉換為字符串,然后執行最終斷言,如下所示:
cy.get('partner PriceField').should(
'have.value',
(+catalogPrice * (1 - +discount / 100)).toString()
)
這是您的計算方式:
此外,如果您的 catalogPrice 為100$
並且折扣為25%
,只需添加.replace(/\D/g,'')
以刪除 % 和 $。 那么在這種情況下,您的斷言將如下所示:
cy.get('partner PriceField').should(
'have.value',
(
+catalogPrice.replace(/\D/g, '') *
(1 - +discount.replace(/\D/g, '') / 100)
).toString()
)
您的計算將如下所示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.