英文:
When to use createSpy, createSpyObject and spyOn?
问题
我最近了解到,spyOn 不能与外部依赖项一起使用,只能与被测试的系统一起使用。
但是我有一些关于为什么不能使用它的问题,我得到的答案很少。
所以我想知道在哪些情况下应该使用它们的最佳实践。
英文:
I have learned recently that spyOn cannot be used with external dependencies and can only be used with System Under Test.
But I have some questions regarding why it cant be used and I came up with very few answers.
So I would like to know the best practices where we should use each of them.
答案1
得分: 5
jasmine.createSpy 可以在没有函数可供监视时使用。它会像 spyOn 一样跟踪调用和参数,但没有实现。
jasmine.createSpyObj 用于创建一个将会监视一个或多个方法的模拟对象。它返回一个具有每个字符串属性的对象,这些属性都是间谍。
你应该在对象上使用 spyOn 方法。spyOn 的优点是你可以调用原始方法。
英文:
jasmine.createSpy can be used when there is no function to spy on. It will track calls and arguments like a spyOn but there is no implementation.
jasmine.createSpyObj is used to create a mock that will spy on one or more methods. It returns an object that has a property for each string that is a spy.
you should have a method on the object with spyOn.The advantage of the spyOn is that you can call the original method
答案2
得分: 2
我们可以在需要监听函数时使用 jasmine.createSpy,例如:
let router = { navigate: jasmine.createSpy("navigate") }
在这里,我们使用 jasmine.createSpy 创建了一个监听函数。
jasmine.createSpyObj 用于创建具有方法的监听类/对象,例如:
let service = jasmine.createSpyObj("ApiService", ["getData"])
在这里,ApiService 是一个具有 getData 方法的类。
英文:
We can use jasmine.createSpy when we need to spy a function e.g.
let router = { navigate: jasmine.createSpy("navigate") },
here we're creating spy function using jasmine.createSpy
jasmine.createSpyObj is used to create spy class/obj which has methods e.g.
let service = jasmine.createSpyObj("ApiService", ["getData"])}
here ApiService is class which has getData function.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论