Sometimes, we want to use object types with Jasmine’s toHaveBeenCalledWith method with JavaScript.
In this article, we’ll look at how to use object types with Jasmine’s toHaveBeenCalledWith method with JavaScript.
How to use object types with Jasmine’s toHaveBeenCalledWith method with JavaScript?
To use object types with Jasmine’s toHaveBeenCalledWith method with JavaScript, we can use spies.
For instance, we write
class Klass {
method(arg) {
return arg;
}
}
describe("spy behavior", () => {
it("should spy on an instance method of a Klass", () => {
const obj = new Klass();
spyOn(obj, "method");
obj.method("foo argument");
expect(obj.method).toHaveBeenCalledWith("foo argument");
expect(
obj.method.calls.mostRecent().args[0] instanceof String
).toBeTruthy();
});
});
to create the Klass
class to test.
Then we create a new Klass
instance in the test.
We then spy on the method
method with spyOn(obj, "method");
.
Next, we call the method
with obj.method("foo argument");
.
Then we check that obj.method
is called with 'foo argument'
with expect(obj.method).toHaveBeenCalledWith("foo argument");
.
And then we check that it’s most recently called with a string with
expect(obj.method.calls.mostRecent().args[0] instanceof String).toBeTruthy();
Conclusion
To use object types with Jasmine’s toHaveBeenCalledWith method with JavaScript, we can use spies.