我决定使用Canopy框架来测试我的 UI。
大多数示例包括内置的断言框架或Expecto。这两个都是不错的选择,但我在项目的其他任何地方都使用 xUnit,并且现在想要统一。
对于 xUnit,我只找到了这个示例,但它只包含两个非常基本的测试,而我需要在所有测试之前运行通用代码之类的东西。canopy + xUnit的惯用方式是什么?
xUnit 具有类固定装置,这里是一个如何将其引入 F# 代码的示例。
将其与树冠场景相结合,以下是它的外观示例:
open canopy.classic
open canopy.types
open System
open Xunit
let private openApp() =
...
type Fixture() =
do
start ChromeHeadless
interface IDisposable with
member _.Dispose() =
quit()
type Tests() =
interface IClassFixture<Fixture>
[<Fact>]
member _.``Soundcheck - Server is online``() =
openApp()
[<Fact>]
member _.``Button1 is enabled``() =
openApp()
let button = element "#button1"
Assert.True button.Enabled
[<Fact>]
member _.``Button2 is disabled``() =
openApp()
let button = element "#button2"
Assert.False button.Enabled