spyOn
を使用すると、.and.callFake
や.andCallThrough
のような別のフォームを使用できます。私は多くのことを試してみたどのタイプのスパイをテストに使用するのですか
describe('Spies on cookie.get', function() {
beforeEach(inject(function() {
spyOn(cookies, 'get').and.callFake(function() {
return undefined;
});
}));
it("should work plz", function() {
cookies.get();
expect(location.path()).toBe('/home');
expect(cookies.get).toHaveBeenCalled();
expect(cookies.get).toHaveBeenCalledWith();
});
});
:私は
...私は私がテストしようとしているこのコードで必要な1本当にわからないんだけどvar lastPage = $cookies.get("ptLastPage");
if (typeof lastPage !== "undefined") {
$location.path(lastPage);
} else {
$location.path('/home'); //TRYING TO TEST THIS ELSE STATEMENT
}
}
ここに私のテストコードの一部であります私はelse
ステートメントをテストしようとしています。したがって、私はcookies.get == undefined
にする必要があります。私はそれをやろう 毎回は、しかし、私はこのエラーを取得する:
Expected '' to be '/home'.
cookies.get()
がundefined
に等しいときlocation.path()
の値が変わることはありません。私は間違ってspyOnを使用していると思いますか?機能上の
beforeEach(inject(
function(_$location_, _$route_, _$rootScope_, _$cookies_) {
location = _$location_;
route = _$route_;
rootScope = _$rootScope_;
cookies = _$cookies_;
}));
フォローアップ:私のモック値に
フォローアップこれらの機能の
angular.module('buildingServicesApp', [
//data
.config(function($routeProvider) {
//stuff
.run(function($rootScope, $location, $http, $cookies)
ない名前、私はcookies.get
を呼ぶんので、どのように?
「クッキー」とは何ですか?それはどこから来たの?これが '$ cookies'をモックすることになっているなら、それは間違っています。 '$ cookies'は挿入されず、' cookies'は '$ cookies'ではありません。 – estus
これにはショートカットがあります: 'spyOn(cookies、 'get')and.returnValue(undefined);' – Thomas
私のモックを明確にするための編集を追加しました。それがあなたが意味するものなのかどうかはわかりませんが、私のコードでそれらのモックを持っていましたが、それらは表示されませんでした。 – FF5Ninja