当前位置: 首页 > 知识库问答 >
问题:

如何在Kotlin对象单例类中测试add方法

毛淳
2023-03-14

我试图在我的object kotlin类中做一些测试,但是当我试图传递对象时,我的thenReturn方法中可能会出现一个错误。我得到一个要求:单位!找到结账。有人能告诉我怎么可能测试它??

如果移除enreturn方法,则会出现以下错误:

Hints:
 1. missing thenReturn()
 2. you are trying to stub a final method, which is not supported
 3: you are stubbing the behaviour of another mock inside before 'thenReturn' instruction if completed

我引用了这个链接,但我不能得到它。

object CheckoutRepository: CheckoutContract.Model {

    var checkout: MutableList<Checkout> = mutableListOf<Checkout>()

    override fun addProductToShoppingCart(checkoutProduct: Checkout){
        checkout.add(checkoutProduct)
    }

    override fun getProductsInShoppinCart() : List<Checkout>?{
        return checkout
    }

    override fun cleanCheckout(){
        checkout.clear()
    }
}



@Test
    fun test_with_mock() {
        val mock = mock<CheckoutContract.Model>()

        var checkout = Checkout("VOUCHER", "voucher", 35.0, 5)
        mock.addProductToShoppingCart(checkout)

        val answer = mock.getProductsInShoppinCart()
        `when`(mock.addProductToShoppingCart(checkout)).thenReturn(checkout)

        assertNotNull(checkout)
        assertEquals(checkout, answer)
    }

共有1个答案

曹浩淼
2023-03-14

在函数addProductToShoppingCart中没有任何返回类型。

如果您想要check Checkout类在函数中进行更改,那么测试用例将通过

override fun addProductToShoppingCart(checkoutProduct: Checkout):Checkout{
    checkout.add(checkoutProduct)
return checkout
}
 类似资料:
  • 给定一个Kotlin单例对象和一个调用它的方法的乐趣

  • 我有一个示例方法(我需要编写测试用例)如下所示, 我想模拟getConfig方法并返回一个特定的字符串值。getConfig是Kotlin对象中方法,如下所示, 下面是我尝试的测试 我没有得到任何错误,但是getConfig方法没有被嘲笑。执行实际的实现。我也试过使用Powermockito。请帮帮我

  • 编写 junit 测试时: 我的代码编辑器(IntelliJ)显示警告 只有非静态嵌套类可以用作@嵌套测试类。 如何在 kotlin 的 junit 测试中编写嵌套类?

  • 我有一些遗留代码,并对我在该代码上所做的增强进行了编写测试。我有一个类SiteSession,并提取了一个接口ISiteSession,以便将依赖项注入到调用类中。 调用类有一个构造函数,在该构造函数中,依赖项被注入到正在测试的控制器CustomerDetails中 现在,我的测试方法已经嘲弄了依赖关系,并且我对为这个控制器或代码的任何其他部分创建的任何测试都没有问题。但是,当调用该控制器上的测试

  • 问题内容: 我有一个建立在一个数据库连接的烧瓶中的应用程序,非常类似于此: 现在:我正在编写一些单元测试,但我不希望它们影响数据库。我想替换为可以设置期望值的模拟对象。 我的测试中使用,足以证明烧瓶文档中的位置。测试示例看起来像 这些测试可以通过,但是可以访问数据库,正如我所说,我想用模拟对象代替db访问。我看不到任何访问g对象或更改的方法。 问题答案: 这有效 test_app.py test.