Tiruan impor dari file lain namun tetap mengembalikan nilai tiruan

Saya sedang menguji fungsi yang memanggil fungsi lain yang diimpor dari anotherFile. outsideFunc itu mengembalikan objek yang berisi 'nama'. Saya memerlukan ini agar dapat melanjutkan sisa pengujian saya/fungsi agar berfungsi dengan benar.

systemUnderTest.js

import { outsideFunc } from './anotherFile.js';

function myFunc() {
   const name = outsideFunc().name;
}

File.js lain:

export function outsideFunc() {
   return { name : bob }
}

Saya tidak peduli dengan pengujian anotherFile atau hasil outsideFunc, tetapi saya masih perlu mengembalikan nilai tiruan sebagai bagian dari pengujian myFunc;

systemUnderTest.spec.js

describe("A situation", () => {
  jest.mock("./anotherFile", () => ({
    outsideFunc: jest.fn().mockReturnValue({
      name: 'alice'
    })
  }));

  it("Should continue through the function steps with no problems", () => {
    expect(excludeCurrentProduct(initialState)).toBe('whatever Im testing');
  });
});

Masalah yang saya dapatkan adalah, ketika pengujian unit berfungsi melalui myFunc, const name mengembalikan undefined di mana ia seharusnya mengembalikan alice. Saya berharap ia mendapatkan data dari jest.mock file anotherFile saya dan fungsi tiruannya yang diekspor, tetapi tidak mendapatkan respons yang tepat.

Ketika saya aset yang saya harapkan name = alice sebenarnya saya mendapatkan name = undefined.


person user1486133    schedule 16.10.2019    source sumber


Jawaban (1)


systemUnderTest.js

import { outsideFunc } from './anotherFile.js';

// let's say that the function is exported
export function myFunc() {
   const name = outsideFunc().name;
   // and let's say that the function returns the name
   return name;
}

Anda dapat menjelaskannya di Anda

systemUnderTest.spec.js

import { myFunc } from './systemUnderTest';
import { outsideFunc } from './anotherFile';

// using auto-mocking has multiple advantages
// for example if the outsideFunc is deleted the test will fail
jest.mock('./anotherFile');


describe('myFunc', () => {
  describe('if outsideFunc returns lemons', () => {
    outsideFunc.mockReturnValue({name: 'lemons'});
    it('should return lemons as well', () => {
      expect(myFunc()).toEqual('lemons');
    });
  });
});

contoh kerja

person Teneff    schedule 16.10.2019