【发布时间】:2016-09-15 00:56:05
【问题描述】:
我正在使用 scalatest 和 scalacheck,同时也在使用 FeatureSpec。
我有一个生成器类,它为我生成看起来像这样的对象:
object InvoiceGen {
def myObj = for {
country <- Gen.oneOf(Seq("France", "Germany", "United Kingdom", "Austria"))
type <- Gen.oneOf(Seq("Communication", "Restaurants", "Parking"))
amount <- Gen.choose(100, 4999)
number <- Gen.choose(1, 10000)
valid <- Arbitrary.arbitrary[Boolean]
} yield SomeObject(country, type, "1/1/2014", amount,number.toString, 35, "something", documentTypeValid, valid, "")
现在,我有了与 FeatureSpec 配合使用的测试类以及运行测试所需的一切。
在这个类中我有场景,在每个场景中我想生成一个不同的对象。 据我了解,生成对象最好使用 forAll func,但对于所有人来说,都不一定会为您带来对象,因此您可以添加 minSuccessful(1) 以确保您获得列表 1 obj ... .
我是这样做的,它确实有效:
scenario("some scenario") {
forAll(MyGen.myObj, minSuccessful(1)) { someObject =>
Given("A connection to the system")
loginActions shouldBe 'Connected
When("something")
//blabla
Then("something should happened")
//blabla
}
}
但我不确定这到底是什么意思。 我想要的是为每个场景生成一张发票并对其执行一些操作...... 我不知道为什么我关心生成是否有效……我只是想要一个生成的对象来工作。
【问题讨论】:
-
我想你只是想取样:
MyGen.myObj.sample(这是单个生成的对象) -
@Łukasz 但这给了我和选项......而不是我的对象
标签: scala generator scalatest scalacheck