首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造函数中的fsunit.xunit测试异常

构造函数中的fsunit.xunit测试异常
EN

Stack Overflow用户
提问于 2014-04-13 12:08:46
回答 1查看 436关注 0票数 3

拥有

代码语言:javascript
复制
type Category(name : string, categoryType : CategoryType) = 
        do
            if (name.Length = 0) then
                invalidArg "name" "name is empty"

我试图使用FsUnit +xUnit测试这个异常:

代码语言:javascript
复制
[<Fact>]
let ``name should not be empty``() =
    (fun () -> Category(String.Empty, CategoryType.Terminal)) |> should throw typeof<ArgumentException>

但是当它运行时,我看到了XUnit.MatchException。我做错什么了?

  1. 测试源代码
  2. 类别类型源代码
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-13 12:36:43

虽然我不是FsUnit专家,但我认为MatchException类型是应该的,因为FsUnit使用自定义匹配器,并且匹配没有成功。

然而,编写的测试似乎是不正确的,因为

代码语言:javascript
复制
(fun () -> Category(String.Empty, CategoryType.Terminal)

是一个带有签名unit -> Category的函数,但您并不真正关心返回的Category

相反,你可以把它写成

代码语言:javascript
复制
[<Fact>]
let ``name should not be empty``() =
    (fun () -> Category(String.Empty, CategoryType.Terminal) |> ignore)
    |> should throw typeof<ArgumentException>

注意添加的ignore关键字,它忽略了Category返回值。此测试通过,如果删除“警卫”条款,则失败。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23042547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档