1. ホーム
  2. javascript

JasmineのtoHaveBeenCalledWithメソッドでオブジェクト型を使用する

2023-09-14 21:08:48

質問

Jasmineを使い始めたばかりなので、初心者の質問で申し訳ないのですが、オブジェクトタイプをテストするために toHaveBeenCalledWith ?

expect(object.method).toHaveBeenCalledWith(instanceof String);

これができるのは知っていますが、引数ではなく戻り値をチェックしているのです。

expect(k instanceof namespace.Klass).toBeTruthy();

どのように解決するのですか?

toHaveBeenCalledWith はスパイのメソッドです。そのため、以下の説明のようにスパイにのみ呼び出すことができます。 ドキュメント :

// your class to test
var Klass = function () {
};

Klass.prototype.method = function (arg) {
  return arg;
};


//the test
describe("spy behavior", function() {

  it('should spy on an instance method of a Klass', function() {
    // create a new instance
    var obj = new Klass();
    //spy on the method
    spyOn(obj, 'method');
    //call the method with some arguments
    obj.method('foo argument');
    //test the method was called with the arguments
    expect(obj.method).toHaveBeenCalledWith('foo argument');   
    //test that the instance of the last called argument is string 
    expect(obj.method.calls.mostRecent().args[0] instanceof String).toBeTruthy();
  });

});