Apakah Anda ingin meminta _fitur_ atau melaporkan _bug_?
Laporkan bug
Apa perilaku saat ini?
Pada Jest 16: menguji toHaveBeenCalledWith
dengan 0 argumen tidak lulus ketika mata-mata dipanggil dengan 0 argumen
Pada Jest 15: menguji toHaveBeenCalledWith
dengan 0 argumen berlalu ketika mata-mata dipanggil dengan 0 argumen
Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi dan jika mungkin repositori minimal di GitHub yang dapat kami npm install
dan npm test
.
Tes minimal:
it('can check that a function is called without arguments', () => {
let fn = jasmine.createSpy();
fn();
expect(fn).toHaveBeenCalledWith();
});
Repo: https://github.com/benmccormick/jest-no-args/tree/master
Apa perilaku yang diharapkan?
Pengujian menggunakan toHaveBeenCalledWith
dengan 0 argumen harus memberikan pernyataan ketika mata-mata dipanggil dengan 0 argumen
Jalankan Jest lagi dengan --debug
dan berikan konfigurasi lengkap yang dicetaknya.
> node_modules/.bin/jest --debug
jest version = 16.0.1
test framework = jasmine2
config = {
"rootDir": "/Users/ben/Code/experiments/jest-no-args",
"name": "-Users-ben-Code-experiments-jest-no-args",
"setupFiles": [],
"testRunner": "/Users/ben/Code/experiments/jest-no-args/node_modules/jest-jasmine2/build/index.js",
"scriptPreprocessor": "/Users/ben/Code/experiments/jest-no-args/node_modules/babel-jest/build/index.js",
"usesBabelJest": true,
"automock": false,
"bail": false,
"browser": false,
"cacheDirectory": "/var/folders/wy/1r3js80s60q497r_lrjyb0bh0000gn/T/jest",
"clearMocks": false,
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"coverageReporters": [
"json",
"text",
"lcov",
"clover"
],
"globals": {},
"haste": {
"providesModuleNodeModules": []
},
"mocksPattern": "__mocks__",
"moduleDirectories": [
"node_modules"
],
"moduleFileExtensions": [
"js",
"json",
"jsx",
"node"
],
"moduleNameMapper": {},
"modulePathIgnorePatterns": [],
"noStackTrace": false,
"notify": false,
"preset": null,
"preprocessorIgnorePatterns": [
"/node_modules/"
],
"resetModules": false,
"testEnvironment": "jest-environment-jsdom",
"testPathDirs": [
"/Users/ben/Code/experiments/jest-no-args"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.jsx?$",
"testURL": "about:blank",
"timers": "real",
"useStderr": false,
"verbose": null,
"watch": false,
"cache": true,
"watchman": true,
"testcheckOptions": {
"times": 100,
"maxSize": 200
}
}
FAIL __tests__/test.js
● can check that a function is called without arguments
expect(spy).toHaveBeenCalledWith(expected)
Expected spy to have been called with:
[undefined]
But it was called with:
Array []
at Object.<anonymous>.it (__tests__/test.js:6:16)
at process._tickCallback (internal/process/next_tick.js:103:7)
✕ can check that a function is called without arguments (5ms)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 0.822s
Ran all test suites.
Versi Simpul: 6.7.0
Versi NPM: 3.10.7
Ok, sudah menyelam sedikit. Pencocokan itu sendiri (didefinisikan dalam /Users/ben/Code/experiments/jest/packages/jest-matchers/src/spyMatchers.js
) dilewatkan argumen "tidak terdefinisi" kedua ketika tidak ada argumen yang diteruskan ke dalam fungsi. Jadi masalahnya mungkin lebih dalam (saya kira Anda ingin membedakan antara tidak ada argumen dan secara eksplisit melewati tidak terdefinisi).
Saya belum jelas di mana argumen itu terjadi, tetapi akan mencoba mencari tahu dan membuka PR jika saya bisa
Pembaruan: Saya pikir saya perlu bantuan untuk melacak ini. Cukup berubah dengan korek api ini selama rilis terakhir ini sehingga saya tidak dapat melacak di mana ini rusak.
Hanya ingin tahu: mengapa Anda tidak menggunakan toHaveBeenCalled()
?
'toHaveBeenCalled' memeriksa apakah fungsi tersebut dipanggil sama sekali. Saya memiliki tes yang secara khusus menguji fungsi yang dipanggil tanpa argumen.
Kasus penggunaan dunia nyata: Fungsi ini bekerja pada daftar, dan mengambil id (dan bertindak pada satu item) atau dipanggil tanpa id (dan bertindak di seluruh daftar)
Komentar yang paling membantu
'toHaveBeenCalled' memeriksa apakah fungsi tersebut dipanggil sama sekali. Saya memiliki tes yang secara khusus menguji fungsi yang dipanggil tanpa argumen.
Kasus penggunaan dunia nyata: Fungsi ini bekerja pada daftar, dan mengambil id (dan bertindak pada satu item) atau dipanggil tanpa id (dan bertindak di seluruh daftar)