我很困惑于嘲笑如何对实现进行单元测试。问题是我想嘲笑不同的预期行为。
有没有办法做到这一点?由于导入只能在文件的顶部,并且为了能够模拟某些内容,必须在导入之前声明它。我也试图传递一个本地函数,这样我就可以覆盖行为,但jest抱怨你不允许传递任何本地的东西。
jest.mock('the-package-to-mock', () => ({
methodToMock: jest.fn(() => console.log('Hello'))
}));
import * as theThingToTest from '../../../app/actions/toTest'
import * as types from '../../../app/actions/types'
it('test1', () => {
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
it('test2', () => {
//the-package-to-mock.methodToMock should behave like something else
expect(theThingToTest.someAction().type).toBe(types.SOME_TYPE)
})
在内部,可以想象TheThingTotest.someAction()
使用-package-to-mock.methodToMock
您可以用间谍模拟并导入模拟模块。在测试中,您可以使用mockimplementation
设置mock的行为:
jest.mock('the-package-to-mock', () => ({
methodToMock: jest.fn()
}));
import {methodToMock} from 'the-package-to-mock'
it('test1', () => {
methodToMock.mockImplementation(() => 'someValue')
})
it('test2', () => {
methodToMock.mockImplementation(() => 'anotherValue')
})
简介 在 Laravel 应用程序测试中,你可能希望「模拟」应用程序的某些功能的行为,从而避免该部分在测试中真正执行。例如:在控制器执行过程中会触发事件(Event),从而避免该事件在测试控制器时真正执行。这允许你在仅测试控制器 HTTP 响应的情况时,而不必担心触发事件。当然,你也可以在单独的测试中测试该事件逻辑。 Laravel 针对事件、任务和 Facades 的模拟,提供了开箱即用的辅助函
#使用Mocks测试 在现实世界的应用程序中,我们的组件很可能具有外部依赖性。当为组件编写单元测试时,如果我们可以模拟这些外部依赖性,以使我们的测试仅依赖于被测试组件的行为,这将是理想的。 vue-loader提供了一个特性,它允许你使用inject-loader向*.vue组件注入任意依赖项。一般的想法是,不是直接导入组件模块,我们使用inject-loader为该模块创建一个“模块工厂”函数。
如何模拟集成测试所需的许多依赖关系? 我使用Mockito进行纯单元测试。在这种情况下,Pure意味着测试一个类,嘲笑它的所有依赖关系。漂亮。 现在是集成测试。假设在这种情况下,集成测试将测试以下内容: 消息被放入队列 我们也可以说,在第2步中发生的处理是严肃的事情。它依赖于大量的数据库交互、多种外部服务、文件系统,以及各种各样的东西。流还会引发很多副作用,所以我不能简单地确保响应是正确的——我需
我正在试着用mockito测试我的缓存层。 我用的是这里描述的咖啡因 基本上,我有这个... 这工作得很好,方法被缓存并且工作得很好。
我有一个有很多测试文件的项目。在其中一个测试类中,我需要模拟最终类。正如我发现它可以通过MockMaker(link)完成,但是这破坏了我的所有其他测试类,原因如下: 没有模拟生成器,所有其他测试都可以。 如何指定仅在单个测试类上使用MockMaker?
我在试着采纳协议。我了解消费者方面的等式,它看起来非常好。但我对制作人方面感到困惑。 文档似乎提倡运行提供者应用程序,并根据正在运行的服务器验证合同。 我怎样才能用Pact实现这一点呢?