gpt4 book ai didi

javascript - 使用 Jasmine 模拟 chrome.storage.local 函数

转载 作者:行者123 更新时间:2023-11-29 15:28:05 37 4
gpt4 key购买 nike

我在名为 options.js 的文件中有以下代码。我需要使用 Jasmine 来模拟它。我需要测试 chrome.storage.local.set 在调用 save 函数时是否被调用。

在规范文件中,我有以下代码。但它不会调用 options.js 文件中的 chrome 函数。谁能指出错误?

  beforeEach(function() {
ctrl = new OptionCtrl(scope);
chrome: {
storage: {
local: {
set: function() {
}
}
}
}
});

it('should call storage on save', function() {
spyOn(chrome.storage.local, 'set').and.callThrough();
ctrl.save({data: 'check'}, 'check');
expect(chrome.storage.local.set).toHaveBeenCalled();
});

更新一:保存功能实现

  save(data, successMessage) {
chrome.storage.local.set(data, (error) => {
if (error) {
this.status('Error Occurred. Please refresh.', 1000, 100, 'danger');
} else {
this.status(successMessage, 1000, 100, 'success');
}
});
}

Link to the options.js file - 行:122

最佳答案

在 Jasmine 中 stub 很容易:

var chrome = {
storage: {
local: {
set: function() {}
}
}
}

function OptionCtrl() {
this.save = function(data, callbackStr) {
chrome.storage.local.set(data)
}
}

describe('OptionCtrl', function() {
var ctrl;

beforeEach(function() {
ctrl = new OptionCtrl({});
});

it('calls storage on save', function() {
spyOn(chrome.storage.local, 'set').and.callThrough();
var dataStub = {
data: 'check'
}

ctrl.save(dataStub, 'check');

expect(chrome.storage.local.set).toHaveBeenCalledWith(dataStub);
});

})
<link href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css" rel="stylesheet" />
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script>

关于javascript - 使用 Jasmine 模拟 chrome.storage.local 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37271353/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com