一种方法是通过创建一个工厂函数或者静态工厂方法来实例化对象,然后使用spyk函数对该对象进行代理。具体步骤如下: 创建一个工厂函数或者静态工厂方法,用于实例化对象,并将需要重写的构造函数参数传递给该工厂函数。 在测试代码中,使用spyk函数对工厂函数返回的对象进行代理,并重写需要重写的方法。这样就可以实现重写构造...
我不认为有一种方法可以模拟间谍的初始化函数。
使用spyk函数可以创建一个部分模拟对象: valpartialMock=spyk<MyClass>() 模拟静态方法 Mockk 还支持模拟静态方法。使用mockkStatic函数可以创建一个模拟对象并替换掉原始静态方法的调用: mockkStatic(MyClass::class) 模拟伴生对象 Mockk 还支持模拟 Kotlin 伴生对象。使用mockkObject函数可以创建一个模拟对象并替换掉...
val mock = spyk(MockCls(), recordPrivateCalls = true) every { mock.property } answers { fieldValue + 6 } every { mock.property = any() } propertyType Int::class answers { fieldValue += value } every { mock getProperty "property" } propertyType Int::class answers { fieldValue + ...
wider test coverage (for example of spy{} and answers{}) Automatic testing - add a new GitHub action for running the benchmark tests. Tracking performance over time. I don't know what the best way to achieve this is. Is there a website, like codecov? Help would be really appreciated!
val t = spyk(Testeando(), recordPrivateCalls = true) every { t getProperty "testBool" } propertyType Boolean::class answers { true }// t.testBool = true -> only this works assertTrue(t.test()) } 唯一可行的方法是使用t.testBool = true,但如果它是私有属性,那么它就不能工作首页...
如果你想监视一个实际的实现,你可以这样做 val otherClassSpy = spyk(OtherClass()) 然后它将执行真正的逻辑,并且你可以验证是否进行了调用。 - Laurence 啊,我明白了。谢谢@Laurence的解释。 - praveen_851个回答 8 < p > every{}块是when子句。您可以设置多个条件以返回不同的结果。请参见设置固定...
- `spyk`:可以创建一个真实对象的代理,可以在调用真实方法的定义相应的行为和预期结果。 - `coEvery`:用于模拟挂起函数的返回值。 - `mockkConstructor`:可以模拟对象的构造函数,并定义相应的行为和预期结果。 - `relaxed`:用于创建一个松散的 mock 对象,即在调用未被定义的方法时不会抛出异常。 - `mockkStatic...
val mock = spyk(MockCls(), recordPrivateCalls = true) every { mock.property } answers { fieldValue + 6 } every { mock.property = any() } propertyType Int::class answers { fieldValue += value } every { mock getProperty "property" } propertyType Int::class answers { fieldValue + ...
方案一:将 Engine 的构建从 mock 改成 spy,因为spy可以真实模拟对象行为: engine = spyk<Engine>() 方案二:抛弃 calSpeed 方法, 使用 every { engine.getSpeed() } returns 30 方案三:在 mock Engine 时, 将 relaxed 置为true, engine ...